View Full Version : Programing Languages?
kis2005
13th January 2006, 17:23
I'm interested in programing and I've looked at various languages, but I'm unsure which would be a good place to start. I use Win XP Pro heavily for all my work. I have a copy of Visual Studios.Net 2002 and Dev C++ versions. I know there is more out there and anything I do will most likely lend to my Video and Audio interests. I'm just looking for any suggestions at this point. The only code that I worked with in the past is HTML and JavaScript, and a little Visual Basic 6...I still have a copy of that as well. Any Suggestions???
masken
13th January 2006, 17:36
Are you going to work with programming? If so, I'd ask myself, what do I want to work with?
[)370|\|470!2
13th January 2006, 17:39
Asm imho is teh most powerful. But it's quite tough for beginners(and not only
beginners :D )
Doobie
13th January 2006, 18:03
Duh. C/C++
The newer internet oriented languages are slow, bloated, and weak. The "easier" languages (e.g. Visual Basic) are usually also more bloated, and much less popular (how many open source programs are written in Visual Basic?).
In the old days, I would have agreed with [)370|\|470!2, ASM. ASM still rules for hacking and squeezing out performance. But, modern processors aren't so ASM friendly and Windows sure as death and taxes isn't ASM friendly.
stax76
13th January 2006, 18:57
If you don't use VB6 you can't hardly pick something wrong, just ensure you learn new techniques and if possible new languages from time to time. Very easy and thus suitable for novice users is VB .NET, pretty much hardcore is C++ and ASM but if you got enough motivation you even might get happy with that though it makes only sense for specialized tasks. Naturally it's best to start with something easy and once you master it try something harder.
Eretria-chan
13th January 2006, 19:08
Making a transition for VB to can be C/C++ very hard. Best start of from the scratch of the language of choice - which would preferbly be C++. .NET languages requires users to have the .NET framework plus it's slow and also decompileable.
C++ is the best language out there - and if you want a little extra speed - you can easily integrate asm since that's what native languages work from.
Latexxx
13th January 2006, 19:42
Asm imho is teh most powerful. But it's quite tough for beginners(and not only
beginners :D )
Our university starts with c++ and even before the first c++ course has ended begins a course called Microprocessors which focuses solely on programming Renesas H8S family using only assembly. Call that a crash course for people who haven't programmed before.
Swede
13th January 2006, 19:50
Beeing an old geezer I can still enjoy stories like The puzzle (http://www.folklore.org/StoryView.py?project=Macintosh&story=Puzzle.txt&sortOrder=Sort%20by%20Date). Learning to program is all about *why* and *what*. There is no need to use asm and a 600 byte limit if you're gonna do a inhouse-calendar but if you're aiming for a job at the Pacemaker Medical Group then you'd better learn how to write bugfree, realtime, lifesaving code..
charleski
13th January 2006, 20:15
If you want to learn programming you should realise that the language you use is really secondary to the underlying philosophy. There are several approaches: procedural, object-oriented, list-based, etc. The language you use is just a tool to implement whichever approach you want to use.
Since object-oriented programming has become the dominant force over the past 20 years, it's a good idea to learn on an object-oriented language, like C++, C# or VB .NET. C++ is the most commonly used, but frankly uses a truly awful orthography than can be confusing for a beginner. C# has a better basic design, but restricts you to .NET applications under Windows, which is not a problem if those are the sort of programs you'll be writing - the Visual Studio IDE (Development Environment) is also recognised by many as the best available on any platform, and a good IDE definitely helps with the more mundane tasks.
Latexxx
13th January 2006, 21:09
Since object-oriented programming has become the dominant force over the past 20 years, it's a good idea to learn on an object-oriented language, like C++, C# or VB .NET. C++ is the most commonly used, but frankly uses a truly awful orthography than can be confusing for a beginner.
C++ isn't strictly object-oriented but multi paradigm and that is what gives it immense competitiveness but makes the whole language look confusing if you don't understand it and just think how many ways there are to do one thing. Yet I'd say that it is easier to learn C++ than C because you can use C++ much like C but have some nice things like strings and vectors atop code that basicly looks and feels like C.
weaver4
13th January 2006, 22:26
If you are planning on writing code for the PC I would recommend that you write in a language that supports the .Net Framework; either C#, VB.net or even Delphi.Net. Knowing this framework seems to be more important than which language you attack it from. One exception, if you are planning on writing drivers for the PC you should learn C and C++.
If you are doing embedded code learn C.
BTW: this is a very controversial topic, you won't find two programmers (I am a programmer) that agree with one another on this topic. One thing you might do is go to dice.com and monster.com, look at job openings then decide.
Richard Berg
13th January 2006, 22:56
C/C++
The newer internet oriented languages are slow, bloated, and weak...
I found this amusing. I love C++, but you can't possibly dispute that it's the most bloated programming language in existence.
kis2005: go here http://mitpress.mit.edu/sicp/
Doom9
13th January 2006, 23:00
Isn't ML THE OO language? It's not widely used, but it's the purest thing, and it tends to make people write less buggy code for some wicked reason.
I learned the OO basics from OO Pascal, went over a little C++ (at the time still in dos.. it's fun to make your machine reboot every 5 minutes ;) to Java and C#. I stick with the latter two. Had to learn C at college as well and wrote some pretty nifty stuff with it, and in the end I can't say it hurt learning the nasty stuff, even though it wasn't fun. But in the end, when I can avoid memory management I try hard to.
kis2005
13th January 2006, 23:43
I think I'm more confused then I was... Actually since I do have Visual C++.net (actually the Visaul Package) and a few books I'll start there, but since this is for me and not a degree I can look at some of the others as well. I don't want to get to crazy, because I'm not really sure why I want to learn some basics other then for curiosity sake. But I do appreciate the suggestions and any sources or books that anyone can recommend (perferably with projects) would be appreciated.
stax76
14th January 2006, 00:31
Visual Studio 2005 and SharpDevelop 2.0 are free and imo the best IDE's. Do you know already what kind of application you want to code?
foxyshadis
14th January 2006, 01:03
Ask a dozen people what the best programming language is, and you'll get at least a half-dozen different answers. ^.~ I'd suggest Haskell or XSLT as a way to get some perspective on functional languages, at some point; it will be directly useful for writing event-driven software and indirectly change the way you approach some problems later on.
Doobie
14th January 2006, 05:39
I found this amusing. I love C++, but you can't possibly dispute that it's the most bloated programming language in existence.
When I say bloat, I don't just mean size of program code, but other factors, such as speed of execution. C++ is light compared to something like Java. Further, I didn't say "C++". I said "C/C++". If you need something lean and mean, you can use C, sans the ++.
It's a no-brainer, unless you have specific needs that dictate otherwise, C/C++ is the only choice for someone who wants to do some serious programming. There's no reason why a dozen different programmers should have a dozen different answers.
stax76
14th January 2006, 12:08
Native C++ has it's strengths and so have others, it takes much ignorance saying one is all bliss while others are for the most part poor.
Eretria-chan
14th January 2006, 12:31
There is probably nothing one cannot do in C/C++. If you want to avoid memory mangement - then you can write a memoy mangement class. Easy. If you want to manipulate memory - go ahead! C/C++ is excellent for that too.
For me, it seems like C/C++ is the one biggest best and overall most complete language. If you use Visual Studio .NET (2002/2003/2005), you can also mix it with .NET, yet also use native code! Astounding!
...Not to mention there are lots and LOTS of code around that can help you on the road.
Manao
14th January 2006, 13:15
There is probably nothing one cannot do in C/C++True ( except for what CAML-like language can do, and for everything that languages I don't know can do ), but same is true for assembler, isn't it ? Yet, that doesn't qualify assembler as a practical language.
C/C++ might be the most easily versatile / widespread / tradeoff between speed & complexity, yet, if I were to do a GUI with MSVC, I'd never use it ( C++ .NET is a laugh ), if I were to do string processing, I'd use Perl, and so on.
And I'd definitely rule out C++ as an easy language to learn. Objects and memory managements are too much to a beginner. I'd begin with VB .NET, and I'd soon try other languages, especially C, because memory allocations is something a coder must be aware of, especially if he wants afterwards to hide it from his code.
stax76
14th January 2006, 13:44
C/C++ might be the most easily versatile / widespread / tradeoff between speed & complexity, yet, if I were to do a GUI with MSVC, I'd never use it ( C++ .NET is a laugh )
How did you come to this conclusion? I guess winforms must work with C++/CLR but for larger GUI projects VB .NET or C# is a better solution. I didn't use pure (CLR) mode much more than toying around but I'm using C++/CLR in mixed mode, for many interop tasks it is *incredible* more easy and flexible (you don't have to prototype tons of declarations) and for many tasks it's the *only* viable solution. COM semantics is something I realy don't wanna see in managed code so I'm glad there is a tool that can bring a API like DirectX to the managed world without COM semantics.
foxyshadis
14th January 2006, 14:48
When I first saw this thread I wanted to post about different languages for different tasks. There are enough options that it really boils down to familiarity and portability. These are just the languages I've used different things over the years.
Rapid deployment GUI:
Delphi
Python
VB.Net
C#
C++ with cross-platform toolkit
Web applications:
PHP
ASP.Net (any .Net)
ASP (VB6)
Java
Server apps or practically anything that must have speed and scalability:
C/C++
Some assembly
C#/Java (if you know what you're doing and must have their extras.)
Administration:
Perl
VBscript/Jscript
PHP
Fun languages that might come in handy someday:
Perl
XSLT
Ruby
Smalltalk
And many finer distinctions can be made, of course. You can find good IDEs for most of these. If nothing else, always know several languages and their strengths well so that you can pull out whatever's needed when it's needed. Otherwise you'll throw C++ at anything and waste a lot of time futzing around when you didn't have to.
Latexxx
14th January 2006, 15:43
And I'd definitely rule out C++ as an easy language to learn. Objects and memory managements are too much to a beginner. I'd begin with VB .NET, and I'd soon try other languages, especially C, because memory allocations is something a coder must be aware of, especially if he wants afterwards to hide it from his code.
You don't need to start your trip to the world of C++ with OO programming. Instead you can use C++ much like Pascal or C but C++ gives you some nifty tools (strings...) which make it even easier than C. And if some day you want to advance to object oriented programming, you don't have to learn a completely different language.
Of course C++ is vast and complex language but you don't need to know even a quarter of it to get going because it's multi paradigm and provides you with tools do your programs as you want.
Shinigami-Sama
14th January 2006, 19:38
I"ve always wanted to learn some bacis X86 asm, but right now I like C, granted I"ve only used C, Java, and a very small amount of php/mySQL so yeah
Eretria-chan
14th January 2006, 20:38
C/C++ might be the most easily versatile / widespread / tradeoff between speed & complexity, yet, if I were to do a GUI with MSVC, I'd never use it ( C++ .NET is a laugh ), if I were to do string processing, I'd use Perl, and so on.
But objects can simplify this - and that is the core of C++ and object-oriented programming. You can use a class that makes strings as easy to use as in Vb or Perl. GUI isn't that bad with MFC and some documentation on the classes.
And I'd definitely rule out C++ as an easy language to learn. Objects and memory managements are too much to a beginner. I'd begin with VB .NET, and I'd soon try other languages, especially C, because memory allocations is something a coder must be aware of, especially if he wants afterwards to hide it from his code.
Again, not exactly true... using objects, C++ can be like any High Level Language. And you don't NEED to create stuff on the heap either... One can avoid it, and use referneces and stuff... of course, pointers are much more flexible than both stack and referneces, but if using a high level language, you don't care about speed or flexibility for the most time.
Manao
14th January 2006, 20:58
You can use a class that makes strings as easy to use as in Vb or Perl.VB, certainly. Perl, definitely not.GUI isn't that bad with MFC and some documentation on the classes.I hope your kidding. MFC is an old C API hastily & badly rewritten "à la C++". .NET is much better in that regard, even if I dislike C++ .NET ( though I'll admit stax remarks are perfectly valid and are the reasons why I had to use it in the first place ). Another worthy GUI toolkit seems to be QT. I never used it but I heard many praises about it. But definitely not MFC.And you don't NEED to create stuff on the heap either... One can avoid it, and use referneces and stuff...But one can't grasp the usefullness of references without having used C, in my opinion. High level languages are great, but imho hides too much mechanisms behind a simple "=", that the user must be aware of. Else, when speed will really matter, the user will be lost. And a user can't be aware of that without doing some "low level" coding, with C or pascal.but if using a high level language, you don't care about speed or flexibility for the most time. ???
And if some day you want to advance to object oriented programming, you don't have to learn a completely different language.True, but I don't see learning a completely new language a drawback. On the contrary, I find that useful, because it makes one discover and use other paradigms
dragongodz
15th January 2006, 01:01
kis2005 - as you can probably see by now people can and will argue over which language to use until the cows come home. in the end though what you really should do is decide what type of things you are going to be programming, both now and any plans you intend later if possible, and then decide what you think is the most suitable language.
so for example if you only intend to create gui's then language 'A' may be a good choice for both simplicity of learning and speed at which you can get the gui done. however if the speed of the programs is a more important factor then language 'B' may be more suitable even though it will take you longer to learn and take longer to write your programs.
notice i did not name what languages 'A' and 'B' were ? thats because no matter what languages you put in those spots somebody will argue its merits and i am not interested in doing that. others are doing a fine job of that already and if you look around the net you can find plenty of other places to find out pros and cons of different languages aswell. ;)
Doobie
15th January 2006, 01:17
kis2005 - as you can probably see by now people can and will argue over which language to use until the cows come home.
No. If you read the thread, you can see that there is strong general agreement that C/C++ is a good general choice. When people suggest other things, they're thinking of specific needs (and, so far, none of those specific needs includes, speed, stability, and popularity). Don't confuse the noise with the signal.
charleski
15th January 2006, 01:38
When people suggest other things, they're thinking of specific needs (and, so far, none of those specific needs includes, speed, stability, and popularity).Actually, I'd suggest C# for the specific need of not having to sit there trying to remember when you put the * before the name instead of after it (or is it a ^?...)
dragongodz
15th January 2006, 01:58
No. If you read the thread, you can see that there is strong general agreement that C/C++ is a good general choice.
did i say it wasnt ? the fact is there are alternatives being discussed and also the difference between .NET and plain c/c++ etc and merits of all.
When people suggest other things, they're thinking of specific needs (and, so far, none of those specific needs includes, speed, stability, and popularity).
hmm and wasnt my suggestion to him to consider what his needs would be, whether ease of creation or speed just being examples, to help him decide ? just because somebody hasnt specifically mentioned speed at the moment doesnt preclude it from his possible consideration. for example if he wanted to write an encoder engine i would certainly think of speed as being a factor while if it was a gui then i wouldnt. since we dont know what his plans are we can not comment on what his exact needs are.
Don't confuse the noise with the signal.
i didnt. i think you confused some very general advice which excluded naming any specific languages as being more than it was. ;)
Eretria-chan
15th January 2006, 03:05
One last reply to this to clear some things up...
VB, certainly. Perl, definitely not.
But still, string in VB is very easy... and IMO I find it confusing with all those operators in perl. It's easier to call functions to do specific stuff.
I hope your kidding. MFC is an old C API hastily & badly rewritten "à la C++". .NET is much better in that regard, even if I dislike C++ .NET ( though I'll admit stax remarks are perfectly valid and are the reasons why I had to use it in the first place ). Another worthy GUI toolkit seems to be QT. I never used it but I heard many praises about it. But definitely not MFC.
I agree... but MFC is very handy and won't give you as much headaches as pure win32 programming. Even though .NET has been available to me all this time, I have stuck with MFC, because it is a decent - not too complex - way of writing a gui, if only you know how to do it.
???
When using a high level language (for example vb), you cannot get real flexibility or real speed (as compared to low level languages, that is), so when using high level programming language, you are aware that you can't do the stuff that will gain the most speed or flexibility.
There!
foxyshadis
15th January 2006, 05:53
If you like MFC, please, for the sake of your sanity, use ATL or WTL. (Or even wx or Qt.) They're the same kind of thing, a framework to hide all the painful complexities of windows behind, but with much more power, includes stuff that's become important since 1997, and doesn't have the bloated size and many bugs of MFC. MFC is quite dead on a support front, and will never get any of that.
Even with high level, thanks to the magic of dlls you can always call a C function to do your encryption or encoding or rendering for you. I was on a team that simultaneously developed pieces in delphi, C++, and asm once, though most of the delphi codebase moved to C++ for the next version.
Eretria-chan
15th January 2006, 14:15
If you like MFC, please, for the sake of your sanity, use ATL or WTL. (Or even wx or Qt.) They're the same kind of thing, a framework to hide all the painful complexities of windows behind, but with much more power, includes stuff that's become important since 1997, and doesn't have the bloated size and many bugs of MFC. MFC is quite dead on a support front, and will never get any of that.
But it's enough! It works fine, and I never have encountered the real need for more power. The only thing I can complain on is that MFC doesn't like threads that much. ATL is great for com stuff and last I looked at WTL (but I haven't even used it really), it required you to create windows by NOT using templates...
Even with high level, thanks to the magic of dlls you can always call a C function to do your encryption or encoding or rendering for you. I was on a team that simultaneously developed pieces in delphi, C++, and asm once, though most of the delphi codebase moved to C++ for the next version.
Yep. But that's also the one of the ideas behind .NET, isn't it? Use any language you like and they will easily interop between each other with no problems.
Zarxrax
16th January 2006, 04:42
Well, since I just recently started coding myself (well, sorta), I'll weigh in on this issue for you.
I did learn some Java in college, but promptly flunked out and after some time learned I'm much better suited to Accounting ;p Anyways, even after having some training in Java, I still really had absolutely no idea how to write a program that would do anything useful.
Then recently I decided I would try and start learning how on my own.
I started by downloading Microsoft Visual Basic 2005 Express Edition, and watching the free training videos that microsoft had up. After mucking around with it for a few days, I had managed to write my first piece of software, an x264 bitrate calculator.
Its VERY nice. You can create a gui by simply dragging and dropping components. Once you've got that in place, you simply fill in the code to react to the gui (like tell it to perform some calculation when you press a button, or whatever). The videos from microsoft were extremely helpful and got me started very quickly.
A few days ago, I decided to download Microsoft Visual C# 2005 Express Edition. As far as I can tell, its exactly the same as Visual basic, only the syntax is different (and makes more sense too, IMHO). I am currently writing my 2nd program in this, and I do prefer it to visual basic. A big reason to choose this over visual basic is that the syntax it uses is pretty much the same as C++ and Java, so if you want to learn one of those some day, it wont be as hard as it would be coming from visual basic.
So I would really recommend C# 2005 to you. At the very least, go check out the training videos (http://msdn.microsoft.com/vstudio/express/visualCSharp/learning/) from microsoft and see it for yourself.
Eretria-chan
16th January 2006, 09:00
A few days ago, I decided to download Microsoft Visual C# 2005 Express Edition. As far as I can tell, its exactly the same as Visual basic, only the syntax is different (and makes more sense too, IMHO). I am currently writing my 2nd program in this, and I do prefer it to visual basic. A big reason to choose this over visual basic is that the syntax it uses is pretty much the same as C++ and Java, so if you want to learn one of those some day, it wont be as hard as it would be coming from visual basic.
And that's what makes me stay away from it :sly: Stupid VB wannabees :P Native C++ is the only true language with the power left... that has been left out in the .NET framework.
stax76
16th January 2006, 10:22
As far as I can tell, its exactly the same as Visual basic, only the syntax is different (and makes more sense too, IMHO).
If Java is what you have learnt first than that might be the reason why C syntax makes more sense to you! VB syntax has some advantages over other languages like background compiling to mark errors on the fly, generally it has the richest code editor experience for technical reasons because many code editor feature require a verbose syntax and VB has the most verbose syntax. On the other side C# and Boo have cool features some other .NET language might not have and might only be possible with a very terse syntax or with using curly braces so once you got used to a syntax it don't makes too much of a difference because everything have pros and cons. Most people continue with what they grew up so a VB6 user will likely embrace VB .NET while a C++ or Java user will pick C# and a Phyton user will use Boo of course which looks pretty nifty btw.
Mr_Odwin
16th January 2006, 20:13
Its VERY nice. You can create a gui by simply dragging and dropping components. Once you've got that in place, you simply fill in the code to react to the gui (like tell it to perform some calculation when you press a button, or whatever). The videos from microsoft were extremely helpful and got me started very quickly.
Is there anything like this (that is free) for a language that doesn't require the .Net framework? I've been playing with the express editions too, but when I try to share my apps with friends they've had trouble because they don't have .NET installed. I don't mind the language (I'll pick it up hopefully), just a prog that lets me make a gui easy and then can run on windows with nothing needed.
Doom9
16th January 2006, 20:36
When I hear perl I immediately think of regexps and then I feel like puking. It also lacks a freely available proper IDE. Nice for little scripts but not the thing if you want to write a real software.
Native C++ is the only true language with the power left... that has been left out in the .NET framework.There's quite a bit of improvement in interop between native and managed C++ in the latest framework.
You can do GUIs with ATL? Must've missed that in my ATL book (it only explains ActiveX and COM). But that book (I don't recall the name now.. one of the bibles though) really gave me severe headaches. But then again, I also feel like my head is going to explode when I see senseless stuff like casts to void or pointers to void, or method calls with 10 parameters of which in 99% of all cases 80% are unused.. all the stuff I generally associate with W32API (so C) and ATL.
While I find MFC awkward as well having done GUIs before in Java and C# (you have to admit, it's so much more logical and easy), for using a native language it seems to work quite well. But then again I've only written a few frontends for some DCOM services (that was before all the SP2 style DCOM security came along.. I hope the customer will upgrade his W2K boxes to Vista directly and then I can proprose a move to .NET.. ).
stax76
16th January 2006, 21:02
Is there anything like this (that is free) for a language that doesn't require the .Net framework?
I got Delphi 2005 for free but I don't know if you can download it.
When I hear perl I immediately think of regexps and then I feel like puking.
IMO regex can work miracles, actually I have a lot fun with this and thus got regex all over my source code, you need of course a application to build the expressions. I'm using this (http://www.radsoftware.com.au/regexdesigner/) though I'm not sure if there are better.
You can do GUIs with ATL?
IIRC yes, there are some classes.
Doom9
16th January 2006, 21:06
I got Delphi 2005 for free but I don't know if you can download it.How about NetBeans, or Eclipse and plugins (both for Java). Eclipse also has a C++ mode if I'm not mistaken.
Eretria-chan
16th January 2006, 23:52
There's quite a bit of improvement in interop between native and managed C++ in the latest framework.
Wonderful! I've always pretty much wanted to use the .net framework for mostly the GUI simplicity's sake but also keep my native approach.
...But still... I need to convert all the native GUIs to managed ones and it's still a pain in the ass!
stax76
17th January 2006, 00:39
How about NetBeans, or Eclipse and plugins (both for Java). Eclipse also has a C++ mode if I'm not mistaken.
He was asking to make GUI's using RAD without .NET, I guess Java fits this description as well but if he has second thoughts about .NET he might have second thought's about Java as well. I would rather use Visual Studio but this requires using the clunky .NET framework of course.
hartford
17th January 2006, 03:02
So, I guess nobody likes Forth :)
Neo Neko
17th January 2006, 03:51
Just to throw my 2 cents in. Any language using the general structure and syntax of C/C++. It is very portable and will serve you well. Java, PHP, Mono (and Microsoft's proprietary version .net), not to mention C and C++. Plus the skills you learn will be helpfull with other more task specific languages like PERL.
LordRPI
17th January 2006, 04:01
Isn't ML THE OO language?
IIRC it isn't ML that's the OO language, it's the functional programming language... it's smalltalk that is the OO language.
Both ML and Prolog hurt my head. Now LISP.. that's a real language XD
Doom9
17th January 2006, 09:08
it's smalltalk that is the OO language. You're right.. don't know how I could've mixed up the two.
Ac3Dc3
17th January 2006, 13:04
interesting thread..
can someone with an IT related degree answer answer this? how important do you think the language they teach for a degree course is? what i mean is, should it be important that they focus on, for example, java as opposed to C/C++ ?
Ac3Dc3.
(not a fan of java)
masken
17th January 2006, 13:11
...as mentioned, if I were you and the main goal was going for a professional career as a programmer, I'd choose a common platform. .NET C# or C++.
Ac3Dc3
17th January 2006, 22:06
were you replying to me masken?
if so, are you saying that if that is my goal, then i should ditch one university because of the java syllabus and choose another with a different one instead? maybe not the answer i was looking for lol
Neo Neko
18th January 2006, 00:09
were you replying to me masken?
if so, are you saying that if that is my goal, then i should ditch one university because of the java syllabus and choose another with a different one instead? maybe not the answer i was looking for lol
No. If you learn Java you more or less know C and C++. As well as Mono and C#. The skills are also easily transferrable to PHP as well. Only if your university has a mostly Visual Basic syllabus then you should jump up and run like hell away from there as fast as possible. :D
The main differences are the libraries and APIs. Which all fall in line once you have the basics.
Doobie
18th January 2006, 16:17
Freshmeat (http://freshmeat.net/browse/160/) hosts thousands of programming projects. You can see that C/C++ is easily the king.
C (7888 projects)
C++ (4079 projects)
Compare to C# (217 projects).
How about this measure: When you, the user, downloads a C program, what do you say? Nothing, really. When you download a Java or C# program, what do you say? "This is such a pile of resource-sucking cr*p that I need to upgrade to a quad-processor computer with a few gigs of RAM just to use this program."
How about this worthless advice: "If you don't use VB6 you can't hardly pick something wrong." Gee, thanks for narrowing it down. Or, what's up with, "notice i did not name what languages 'A' and 'B' were ? thats because no matter what languages you put in those spots somebody will argue its merits and i am not interested in doing that." In other words because 90% of advice is worthless that the worthlessness of past advice becomes an excuse for more worthless advice. How about this popular advice I found when I started using Linux, "Which distro? Everyone is suited to something different. Try them out to see which you prefer." Of course, newbie, you'll have to try them each out for an extended period of time to get familiar with them. And, when you become a Linux guru you might actually be qualified to recommend for yourself which is a good choice for when you were first started.
Nematocyst
18th January 2006, 18:36
Heh. Agreed 100%, doobie.
At the risk of offending anybody by actually advocating one isntead of saying something like, "Use what suits you and your career best." I would have to say learn C/C++ at some point. Lots of other languages have their roots there, so picking them up later will be a snap. But beyond that, I would also say: learn to program. Sounds odd, I know, but it's so important to learn how to write software-- well, _design_ actually. If you want a career in software development, you need to learn to design and implement well, irrespective of language. If you find yourself starting a new project in the IDE writing code, then either learn to design it on paper first, or pick another career. Actually, it doesn't have to be on paper really, but the point is you need to plan it out mostly before you even think about writing code.
Personally, I've used C/C++ for well over a decade, and an occasional fling into VB which I absoutely hate. I cringe when I need to use it. And, I think it has resulted in "programmers" writing software who have no business doing so.
Ac3Dc3
18th January 2006, 21:38
thanks for the info pertaining to my question : ) i think ima get in touch with the various instutions and see how much leeway there is on projects etc.
and kis2005, just make sure what ever you choose, you jump into object-oriented programming straight away. work on as many group projects as you can, as group planning, delegation, time-management and teamwork will be paramount in any large project.
and get ready to think outside the box, abstraction can be the hardest part!
dragongodz
19th January 2006, 01:10
Or, what's up with, "notice i did not name what languages 'A' and 'B' were ? thats because no matter what languages you put in those spots somebody will argue its merits and i am not interested in doing that." In other words because 90% of advice is worthless that the worthlessness of past advice becomes an excuse for more worthless advice.
hmm did i call any advice you have given worthless or insult you some other way ? no ? then why do you think you have any right to insult me that way ? i dont give a monkeys rear if you dont agree with my advice for people to think about what their needs are and will be before deciding what language to use but DONT insult me unless you really want to start a fight.
Freshmeat hosts thousands of programming projects. You can see that C/C++ is easily the king.
and lets look at what some of the programs floating around on this board are written in.
HC - Fortran with a little C/C++ for a few parts.
DVD-Rebuilder - Visual Basic (i dont know if jdobbs has mixed any other code etc)
RealAnime - Delphi
yes i can also go and list other programs that are written in C/C++ aswell but the point remains you do not need to use that to write a good program. people should decide what they are going to be writing and also how accomplishing that will be best for them.
maybe if people start listing what the project they have worked on and what they are written in it may be of help to see what people are using for what. i'll even start.
some projects i have been and still am involved in
DVDx - dvd/mpg to avi/vcd/svcd conversion - C/C++
Rejig - mpeg compressed domaijn transcoder - C/C++
QuEnc - mpeg 1/2 encoder - C/C++
Doobie
19th January 2006, 04:33
and lets look at what some of the programs floating around on this board are written in.
HC - Fortran with a little C/C++ for a few parts.
DVD-Rebuilder - Visual Basic (i dont know if jdobbs has mixed any other code etc)
RealAnime - Delphi
The guy using Fortan is probably an old geezer. He's using it because that's what he used before you were born. The guy using Visual Basic looked for something easy when he started programming and no one was around to clue him in. And, look at yourself, you're using C/C++ for your own work. So, why do you refuse to recommend it? My point is that you're not helping someone asking for help when you're throwing up your hands and declaring that someone will defend anything therefore there's no reason to recommend anything.
yes i can also go and list other programs that are written in C/C++ aswell but the point remains you do not need to use that to write a good program. people should decide what they are going to be writing and also how accomplishing that will be best for them.
Sure, you can write a good general app in any language. So what? So, you can do it in C/C++. Yeah, instead of kis2005 asking for advice, he should just try them all, master them all, then he'll know what is best for him. If he said he needed to program an old COBOL computer, or he just wanted the easiest way to make GUIs for command-line apps, or he just wanted to make little applets to run from webpages, he would have said so.
dragongodz
19th January 2006, 05:30
The guy using Fortan is probably an old geezer. He's using it because that's what he used before you were born.
i cant remember hank315's age offhand but do you even know mine ?
The guy using Visual Basic looked for something easy when he started programming and no one was around to clue him in.
hahaha do you even know who jdobbs is or what DVD-Rebuilder is ?
i am curious as to why you didnt say anything about Delphi though. i am sure Sirber and probably others would have been ready to reply about its pros and cons.
And, look at yourself, you're using C/C++ for your own work. So, why do you refuse to recommend it? My point is that you're not helping someone asking for help when you're throwing up your hands and declaring that someone will defend anything therefore there's no reason to recommend anything.
maybe you should try reading the whole post i did. there is plenty of pros and cons posted both on this forum(even in this thread) and elsewhere so i advised him to first decide what his aims where and to then do some research on what the strengths are for the different languages.
i am NOT interested in debating which you think is best and why which is why i didnt name languages. and yes i have seen before where someone will defend a language as being "the best" for anything and everything under every situation etc etc etc. sorry but such zealotry doesnt interest me.
If he said he needed to program an old COBOL computer, or he just wanted the easiest way to make GUIs for command-line apps, or he just wanted to make little applets to run from webpages, he would have said so.
the fact is he didnt say what he was interested in programming so my advice was more general, such as to decide that first of all and then find out the pros and cons of the languages. is that really too hard for you to understand or accept as being reasonable advice or is it just worthless as you have already posted ?
oh and i am still waiting to see your projects list.
Shinigami-Sama
19th January 2006, 05:43
if you want to know my opion
ASM is the best and only language
after all, all compiles drag it down to ASM don't they?
so saying c/cpp/c# java
cobol
php
ect
ect
ect
are a languages are you not talking about mearly a front end for ASM?
foxyshadis
19th January 2006, 06:04
If it can't be written in the C preprocessor, and if those macros don't generate recursive crashes in at least 2 modern compilers, it may not even be worth writing at all.
Shinigami-Sama
19th January 2006, 06:44
wait what where?
foxy wanna clear that up for me? or is there a post missing I"m unaware of?
WEWT 666 posts, been wait'n on that for a while now
hank315
19th January 2006, 17:54
@Doobie
You seem to be very convinced about the superiority of C/C++.
The guy using Fortan is probably an old geezer. He's using it because that's what he used before you were born.
This "old geezer" uses Fortran because most programming I do is for number crunching applications.
But of course in your eyes C/C++ will do a better job for that too...
Doobie
19th January 2006, 19:26
@Doobie
You seem to be very convinced about the superiority of C/C++.
This "old geezer" uses Fortran because most programming I do is for number crunching applications.
But of course in your eyes C/C++ will do a better job for that too...
Ladies and Gentlemen of the jury, notice Mr. Hank doesn't dispute my "old geezer" remark ;). Besides, in my messages, I've been clear that other languages may be better for specialized tasks, it's just that the guy asking for advice identified no such thing. He would have, if he had special needs.
Fortran is an easy language (similar to BASIC) and it crunches numbers fast. That was enough when the alternative was to use COBOL, and early C/C++, back in prehistoric days. But, modern C/C++ compilers can be as fast as Fortan for number crunching, while offering all the other advantages of C/C++. See Blitz++ (http://www.oonumerics.org/blitz/), for example.
Of course, Hank, Fortran is working for you, so I wouldn't dream of telling you to change. But, for a new kid wanting to start programming, I'm not going to recommend Fortran.
Eretria-chan
19th January 2006, 20:26
So there are a lot of languages, and most of them can do pretty much everything. C/C++ is kinda standard, powerful and can most things. Bottom line still is, choose what you will!
I'm using C++, because I like the power it brings me. At first, I think I saw it as a professional language, or something... but that was so long ago. Anyway, what language do you want? Select one that you like!
Trahald
19th January 2006, 20:54
the modern visual basic (vs.net) is not like the old stuff. you can code simple stuff but it can be as modular and oopy as c++. now myself i prefer c++. i personally think the speed benefit is worth the extra learning curve. the *'s and &s make sense after a while. having said that.. with modern processors it ends up that alot of basic apps that are moderately cpu intensive while very disk intensive seem to be on par with the equivelant c++ app. for very cpu intensive applications c++ has the edge.
businesses that need applications often are looking for stuff that works but also develops quickly. i dont mean software companies but traditional businesses that just need custom made applications. as their needs change it needs to be modified quickly or scraped and rewritten quickly. c++ doesnt really fit that build compared to other 'easy' languages.
of course you can follow chuck norris who just codes in straight binary ;)
Doobie
19th January 2006, 21:03
So there are a lot of languages, and most of them can do pretty much everything. C/C++ is kinda standard, powerful and can most things. Bottom line still is, choose what you will!
I'm using C++, because I like the power it brings me. At first, I think I saw it as a professional language, or something... but that was so long ago. Anyway, what language do you want? Select one that you like!
Contrary to what is drummed into our heads every day, discrimination is a virtue and crassness is boneheaded. Doing one thing (e.g. using C++) while saying another thing might also be seen as hypocrisy. And, comments like "choose what you will" and "select one that you like" are just plain worthless.
If you have any sort of authoritative knowledge, don't be afraid to say clearly what you believe. "C/C++ is kinda standard, powerful and can do most things. That's what I use and that's what I recommend."
Trahald
19th January 2006, 21:24
Contrary to what is drummed into our heads every day, discrimination is a virtue and crassness is boneheaded. Doing one thing (e.g. using C++) while saying another thing might also be seen as hypocrisy. And, comments like "choose what you will" and "select one that you like" are just plain worthless.
If you have any sort of authoritative knowledge, don't be afraid to say clearly what you believe. "C/C++ is kinda standard, powerful and can do most things. That's what I use and that's what I recommend."
you are right... i'll ask doom9 to delete all the other posts except for the first one and yours. eh.. maybe even the first one too.. thanks doobie
dragongodz
20th January 2006, 01:59
Ladies and Gentlemen of the jury, notice Mr. Hank doesn't dispute my "old geezer" remark ;).
ah so you know his age now then ? ok let me ask your age before i start calling you a sprout. :D
Besides, in my messages, I've been clear that other languages may be better for specialized tasks, it's just that the guy asking for advice identified no such thing. He would have, if he had special needs.
wow so you agree with my advice that he should decide what his task is going to be before deciding the language but then call my advice worthless. thats some trick for sure.
a question though, are you a mind reader now ? i am guessing you must be since you seem to KNOW he would have said what he wanted to write if it wasnt in general.
I'm not going to recommend Fortran.
nobody is asking you to. however you then do not have any right to complain if somebody suggests a different language or to decide what to use based on what their needs will be.
And, comments like "choose what you will" and "select one that you like" are just plain worthless.
you just seem determined to insult people dont you ?
you are right... i'll ask doom9 to delete all the other posts except for the first one and yours. eh.. maybe even the first one too.. thanks doobie
careful, you forgot a smilie, that may be taken serious by some. ;)
i am still waiting for a project list and maybe some answers to queations i asked in previous posts.
Eretria-chan
20th January 2006, 12:30
Contrary to what is drummed into our heads every day, discrimination is a virtue and crassness is boneheaded. Doing one thing (e.g. using C++) while saying another thing might also be seen as hypocrisy. And, comments like "choose what you will" and "select one that you like" are just plain worthless.
If you have any sort of authoritative knowledge, don't be afraid to say clearly what you believe. "C/C++ is kinda standard, powerful and can do most things. That's what I use and that's what I recommend."
Don't be silly. I used VB at first, and I could make powerful apps that worked well. And I can do the same in C++. Sirber is doing a great program in Delphi. All languages have their advantages and disadvantages, but in the end, you can much accomplish many things with just one language.
So why do I not use VB for my programs? Because after learning C++, it became my favorite language! It is my language of choice - my favorite language.
Doom9
20th January 2006, 13:34
can someone with an IT related degree answer answer this? how important do you think the language they teach for a degree course is?It's not really the language that matters, it's the approach. You can learn object oriented programming with any OO language. Syntax wise, learing a C-style language will ensure you'll pick up the syntax of another (C++, C#, Java, and in a way also PHP) rather easily. Then there's the libraries.. that's where things really separate (unless you're using .NET which supports a variety of languages).
You can see that C/C++ is easily the king.Only trust the numbers you've faked on your own. Sourceforge hosts more Java projects than C/C++ projects, so according to your logic, that would mean Java is the only language anybody should consider learning.
They all have their merits. COBOL/FORTRAN are still used widely in number crunching environments as hank mentioned.. that means large corporations, financial institutions and the likes.. companies relying on sometimes rather old hardware but that just works. At the same time, I've seen financial institutions to use very modern frameworks, like J2EE to achieve things like internet or phone banking.. somewhere behind the business layer are the old mainframe machines, but that's one layer of old and two layers of new.. depending on where you want to find yourself a job, you'll need different skills.
On Windows, there's a huge number of VB programs, like it or not.. and there's VBA that won't go away either. So those VB skills are not for nothing (I don't like the language.. but not liking something shouldn't mean you should turn a blind eye).
If you're aiming for the web, C/C++ won't do you any good.. you'll need to know PHP, Perl, a .NET language, VB (for plain ASP), and a little javascript cannot hurt because some intelligence needs to be placed on the client side.
I started out with Java at university (I knew OO before.. started with Pascal and then a little C++), then the year after we had parallel C and Java courses.. knowing Java meant the C syntax wasn't really a problem so I could get my headache from looking at pointers (I know how it works.. but memory management is the key reason I don't like to use nonmanaged languages unless absolutely necessary). I picked up C# during my thesis (I needed something where I could whip up GUIs easily so I could focus on the internals.. and .NET was available on PDAs and PCs so it was exactly what I needed.. the effort of porting an app that was designed to conserve resources from a PC to its final environment was a breeze).
Then I started working.. and suddenly they had an existing php website that needed some maintenance.. or so things go.
for very cpu intensive applications c++ has the edge. It depends. If it's purely numbercrunching, interate through mathematical algorithms, there's little difference. It also depends on the surroundings.. in video for instance, where everything is geared towards native code, going managed will cost you and slow you down. Similarly, if writing a driver, you have no choice. Slower/faster is often more a product of the surroundings and the compiler/runtime's job than a reflection of how a platform can truly perform.
Doobie
20th January 2006, 19:33
Only trust the numbers you've faked on your own. Sourceforge hosts more Java projects than C/C++ projects, so according to your logic, that would mean Java is the only language anybody should consider learning.
SourceForge (http://sourceforge.net/softwaremap/trove_list.php?form_cat=160)
C (16443 projects)
C++ (17386 projects)
C/C++ 33,839 projects
Java (17594 projects)
Eretria-chan
20th January 2006, 20:06
If you're aiming for the web, C/C++ won't do you any good.. you'll need to know PHP, Perl, a .NET language, VB (for plain ASP), and a little javascript cannot hurt because some intelligence needs to be placed on the client side.
But with Microsoft's IDE, C++ CAN support .NET. Why is it not mentioned? I'd like to understand. Afaik, .NET with C++ does not have any disadvantages.
Doom9
20th January 2006, 20:17
But with Microsoft's IDE, C++ CAN support .NET.well.. okay, but that's managed C++, and you're using the .NET class library, and the server will require ASP.NET (so the .NET runtime installed). Syntax wise, it's the same, but code wise, managed C++ means you're using the .NET FCL.
Naturally, C++ in .NET 2.0, with all the improved interop between native and managed code, is certainly a good thing if you want to go in both directions, but as far as websites are concerned, you'll be restricted to the managed part (which doesn't hurt since native C++ doesn't come with any libs that would make web development bearable).
C/C++ 33,839 projects
Java (17594 projects)Alright, I should've written there are more java projects than C++ projects. But, combining the two is a bit like cheating.. you could just as well combine all .NET languages because they have the same class library, or combine Java and C# because they are so similar that you can pick up the syntax in a day.
dragongodz
21st January 2006, 10:46
Doobie - still waiting. is there any reason you are unwilling to post projects you are or have done some programming with ?
mg262
21st January 2006, 12:29
I've been trying very hard to stay clear of this thread (who needs rule 15 when we can have a perfectly good holy war about geekdom :sly:). But there are a couple of things...
1) The poor unsuspecting OP has been completely forgotten:
I think I'm more confused then I was... Actually since I do have Visual C++.net (actually the Visaul Package) and a few books I'll start there, but since this is for me and not a degree I can look at some of the others as well. I don't want to get to crazy, because I'm not really sure why I want to learn some basics other then for curiosity sake. But I do appreciate the suggestions and any sources or books that anyone can recommend (perferably with projects) would be appreciated.
This is a hard one... a few years ago I was dragged to a bookshop by a friend to find a decent (beginners) C++ book for her; I went through every book there and only found one I was halfway happy with (and unfortunately I didn't write down the name).
(This seems to intimidate most beginners I throw it at... http://www.amazon.com/gp/product/0201700735/002-3636898-1900038?v=glance&n=283155 ... but I'd get it anyway if it fits in your budget; it will stand you in good stead for a very long time, especially the final chapters (especially especially chapter 23).)
(Note to the other inhabitants of Doom9... I am not going to get involved in a flame war about books. So please don't read anything into failures to reply to posts taking this one apart.)
2) kis2005 (again),
I would strongly recommend that you pick something [not trivial and not too ambitious] which you want to build, and try and build it... you will find it a lot more productive than simply playing with lots of examples from books and web pages.
2) is there any reason you are unwilling to post projects you are or have done some programming with ?
A lot of people choose (for whatever personal reasons) to keep their private identity quite separate from their online identity. For many people a large part of their programming will have been done as part of their private life -- e.g. for commercial reasons. But stating something like that in response to this question sounds like a cop-out. So I would personally prefer to keep away from questions like this.
Manao
21st January 2006, 12:40
Another good documentation for C++ is "Thinking in C++" ( freely available as an html documentation, just google it ). It requires, as the author says, that someone else had taught you C and that you have at least a reading level of comfort with it, but once that step is made, it's really great to learn C++, and especially to learn what are the strengths of C++ in comparison to C.
dragongodz
21st January 2006, 13:06
A lot of people choose (for whatever personal reasons) to keep their private identity quite separate from their online identity.
he has not been asked to divulge anything personal that way. do you know my real name from the projects i listed ?
For many people a large part of their programming will have been done as part of their private life -- e.g. for commercial reasons.
and a simple response of something like "i use C/C++ commercially and have not been involved in any public projects" would have covered that quite easily. however neither you or i know if doobie does program commercially or not, let alone if he has helped with any public programs.
But stating something like that in response to this question sounds like a cop-out. So I would personally prefer to keep away from questions like this.
you are not the one calling other peoples posts worthless just because they dont follow your dogma.
it IS a cop-out to post a lot of things like "C/C++ is king" and "a worthless post" etc and then only give sourceforge projects numbers as some sort of justification to that and the insults to other people. go back and look at what his response to what i said HC and DVD-Rebuilder are written in. come on, if he is going to spout that he wants to be able to back it up more than he has so far.
since you gave the link to a C++ book i will throw in one too.
http://www.amazon.com/gp/product/0672327112/qid=1137844887/sr=2-1/ref=pd_bbs_b_2_1/103-7817396-0255066?s=books&v=glance&n=283155
a begginer should not really try to do it in 21 days of course. it is however very exhaustive information wise.
mg262
21st January 2006, 13:26
For the record, I think that calling someone an "old geezer" is completely out of order. I didn't mean to imply that you were the worst participant in this thread, or anything of the sort -- apologies if it read that way.
I have a feeling that that the book you recommend was the book I ended up picking out of the bookshop... though I think it had a white cover with blue writing -- earlier edition?
(I've just noticed that I seem to be unable to count to 3... at least no one else noticed first ;))
Ac3Dc3
21st January 2006, 14:21
i have to second that. the Sams teach yourself books are excellent and that book is on a shelf behind me : )
dragongodz
23rd January 2006, 01:35
I didn't mean to imply that you were the worst participant in this thread, or anything of the sort -- apologies if it read that way.
no i didnt read it that way ... but now that you say it .... ;)
earlier edition?
that link is to edition 5 so yes there were 4 before that.
hmm well looks like we wont be getting any answers. would have been nice to know what kis2005 made of all this debate aswell. :)
kis2005
23rd January 2006, 16:36
What I made out of it??? I always say there are three subjects to avoid or you'll end up in an arguement...now I have to say there is a fourth. I might as well have asked a room full of guitarists what the best guitar or amp was.
But what I did get is that there are more languages out there some of which I never heard of. But then again, I'm a user not a programmer. The best thing for me to do is to play with the software that I have (Visual Studios .Net, VB Enhanced and Dev C++) for now and find some progects to apply them to. I learn better by understanding the main concept of something and then focus on the nuts and bolts of it by applying or doing it. Picture a piramid...start at the top and work you way down. The deeper you go the more complexed it gets. It similar to reverse engineering.
I have to say thanks for the advise, because that is what I was looking for...multiple opinions, I just didn't realize how volatile it was. So thanks again all.
dragongodz
24th January 2006, 01:33
I might as well have asked a room full of guitarists what the best guitar or amp was.
HAHAHA i dont think it was that bad. MOST people were open to the opinion that you could use multiple diferent languages each with their own pros and cons.
The best thing for me to do is to play with the software that I have (Visual Studios .Net, VB Enhanced and Dev C++) for now and find some progects to apply them to.
yes a good idea. try some small projects to see how you feel with them. since you mention .NET, C++ and VB you may want to check this out and try/study some of the projects here
http://www.codeguru.com/
vBulletin® v3.8.5, Copyright ©2000-2012, Jelsoft Enterprises Ltd.