Which Programming Language?
|
|
Rysidian Rubio
Ruby Red Head
Join date: 14 Jan 2004
Posts: 263
|
06-30-2004 18:05
Grim you are right in that I am going to Self Teach at least at the moment. I have been searching the net for info about C and C++ and C# and i have to say it all sounds very daunting as to which will be better to start with or rather not too difficult that i want to give up.
Thanks to all for including websites and books to look for, this will be a great help!
Grim I had actually found those "How to Program" books and read quite a few reviews saying that they are good for those starting out like me. So I was thinking they may be a good place to start (and the high price will force me to be serious since i won't want to have wasted my money. lol).
|
|
Rysidian Rubio
Ruby Red Head
Join date: 14 Jan 2004
Posts: 263
|
06-30-2004 18:12
A question. Since these books: are about the same price would you seriously recommend C or C++ or C#(is there much difference?).
|
|
Ulrika Zugzwang
Magnanimous in Victory
Join date: 10 Jun 2004
Posts: 6,382
|
06-30-2004 18:14
Visual Basic is for the technologically impaired. C# is for windows users who have perl envy. python is for compulsive perl programmers. perl is just right.
Code in perl and become one with the history of Unix, sed, awk, lex, grep, and C.
~Ulrika~
|
|
Tcoz Bach
Tyrell Victim
Join date: 10 Dec 2002
Posts: 973
|
06-30-2004 18:25
Actually, no, I am not assuming structured environ. I am assuming availability of structured materials for non-structured learning.
_____________________
** ...you want to do WHAT with that cube? **
|
|
Grim Lupis
Dark Wolf
Join date: 11 Jul 2003
Posts: 762
|
06-30-2004 19:37
From: someone Originally posted by Rysidian Rubio A question. Since these books:
are about the same price would you seriously recommend C or C++ or C#(is there much difference?). Well, I'm gonna lean towards the C++ book, actually. In spite of my ongoing minor disagreement with Tcoz, I don't necessarily disagree with his points. I pick the C++ book over the C book because it DOES get into OOP. I have the 3rd (and the 2nd) editions of this book. The first 5 chapters are strictly on programming logic structures. Procedural/functional is the key. Then there's 5 chapters of OOP stuff. Then it goes into "specialized" stuff: I/O, templates, data structures, exception handling, yada. I pick it over C# because once you have a grasp of C/C++, C# will be a cakewalk. All you'll need then is a decent reference for the .Net framework namespaces/libraries. That book'll be about 1/3 of the price of one of the textbooks, and will basically just be something to help you shift from C++ to C#. Once you get comfortable with C#, you probably won't need much more than the MSDN library (web version available free online at http://msdn.microsoft.com/) and the occasional search on codeproject.com or gotdotnet.com.
_____________________
Grim
"God only made a few perfect heads, the rest of them he put hair on." -- Unknown
|
|
Rysidian Rubio
Ruby Red Head
Join date: 14 Jan 2004
Posts: 263
|
06-30-2004 20:41
It's great that you said that Grim because i just bought "C++ How to Program 4th edition" (i'm on my lunch break), and it was only $97 Australian which converts to around US$67 so it wasn't all that expensive considering it's size and (apparently) great content. I thought it sounded to be a good starting point for me and after reeding through alot of information on the publisher's website, this seemed to be more for a beginner than the C# book in the same series. Thanks so much everyone for your helpful info especially Grim and Tcoz!! now i've just got 1000 something pages to read 
|
|
Ama Omega
Lost Wanderer
Join date: 11 Dec 2002
Posts: 1,770
|
06-30-2004 20:58
I'm gonna vote for Scheme.
_____________________
-- 010000010110110101100001001000000100111101101101011001010110011101100001 --
|
|
Rysidian Rubio
Ruby Red Head
Join date: 14 Jan 2004
Posts: 263
|
06-30-2004 21:37
Scheme?
|
|
Darwin Appleby
I Was Beaten With Satan
Join date: 14 Mar 2003
Posts: 2,779
|
06-30-2004 21:43
From: someone Originally posted by Rysidian Rubio It's great that you said that Grim because i just bought "C++ How to Program 4th edition" (i'm on my lunch break), and it was only $97 Australian which converts to around US$67 so it wasn't all that expensive considering it's size and (apparently) great content.
I thought it sounded to be a good starting point for me and after reeding through alot of information on the publisher's website, this seemed to be more for a beginner than the C# book in the same series.
Thanks so much everyone for your helpful info especially Grim and Tcoz!!
now i've just got 1000 something pages to read Hey, Cryptonomicon was 950, and that's FICTION. 
_____________________
Touche.
|
|
Ama Omega
Lost Wanderer
Join date: 11 Dec 2002
Posts: 1,770
|
06-30-2004 22:40
From: someone Originally posted by Rysidian Rubio Scheme? http://en.wikipedia.org/wiki/Scheme_programming_language
_____________________
-- 010000010110110101100001001000000100111101101101011001010110011101100001 --
|
|
forestrock Flower
insignificant rock
Join date: 14 Nov 2003
Posts: 120
|
07-01-2004 00:20
Wait, I changed my mind... you should definately learn APL. I'll even pay you L$500 for a Hello World program in APL.
|
|
Champie Jack
Registered User
Join date: 6 Dec 2003
Posts: 1,156
|
07-01-2004 00:40
APL Hello World Program - 'Hello World'
where's my 500 L$?
I've been advised to learn Java, but I can't help thinking that I should put that Visual C++ 6 book to good use. Is it worth my time to open the C++ book, or should I just go buy a Java book?
Champie
|
|
Francis Chung
This sentence no verb.
Join date: 22 Sep 2003
Posts: 918
|
07-01-2004 03:36
From: someone Originally posted by Rysidian Rubio Scheme? It's such a mindjob. Someone decided that a language would be easier to understand if its nesting was more explicit. To that end, you'd use an (excessive(amount)(of [parenthesis]) (which(makes)))for)completely)illegible(code)))) (No doubt, my braces don't match). It's MIT's version of LISP. Functional programming, alledgy good for AI sorts of things. It's what you claim you like when you want to look edumacated, but secretly, you write your code in Perl. (Sorry, couldn't resist Ama  Functional programming is kind of interesting - you sort of write code "top down" as opposed to bottom up. Haskell's not a bad choice for FP. It's not terrible for solving problems that are purely algorithmic, which nothing is these days. Rys: C/C++ isn't too hard to figure out, once you get your head around what a pointer is. It takes a while to get used to. I think undergrad CSers burn a few intro-to-CS lectures on just pointers.
_____________________
-- ~If you lived here, you would be home by now~
|
|
Ama Omega
Lost Wanderer
Join date: 11 Dec 2002
Posts: 1,770
|
07-01-2004 07:43
From: someone Originally posted by Francis Chung It's MIT's version of LISP. Functional programming, alledgy good for AI sorts of things. It's what you claim you like when you want to look edumacated, but secretly, you write your code in Perl. (Sorry, couldn't resist Ama Haha you cought me. My experience in Scheme lies entirely in 1 semester in College, a general course on languages that covered many. I only said it because everyone else had already said the obvious choices. Oh but you are wrong, I hardly ever code in Perl, though I should probably spend some time relearning it. I generally code in C++ or Java. I guess my real point was as others have said - it doesn't really matter what your first language is. My first language was (after TOS Basic) Pascal, but I havn't coded in Pascal almost since I learned it. Most programming languages are very similar, they are essentially variations on a theme - how to make the computer do what you want. As long as you don't waste time learning befung or something as your first language, just choose something that a) is fun and b) you know someone who can help you. 
_____________________
-- 010000010110110101100001001000000100111101101101011001010110011101100001 --
|
|
forestrock Flower
insignificant rock
Join date: 14 Nov 2003
Posts: 120
|
07-01-2004 08:12
From: someone Originally posted by Champie Jack APL Hello World Program - 'Hello World'
where's my 500 L$?
I've been advised to learn Java, but I can't help thinking that I should put that Visual C++ 6 book to good use. Is it worth my time to open the C++ book, or should I just go buy a Java book?
Champie Blast, called on my ruse... I should have asked for something that requires funky characters. 
|
|
Tcoz Bach
Tyrell Victim
Join date: 10 Dec 2002
Posts: 973
|
07-01-2004 08:19
I really can't fathom why anybody would recommend C++ as a first language. I would heartily recommend almost any other programming language to the neophyte. A core notion of learning is to ensure that the learner experiences meaningful success early on. How many people have I seen walk in, say, "I want to be a game programmer" or some such, get handed a C++ book and recommendations for a compiler, and just throw their hands up in frustration. Many schools will refuse to offer C++ as an introduction to programming because the drop and fail rate is so high. This is not to say that nobody has ever learned C++ from nothing but a book and their desktop. I also fully understand all arguments regarding the power of the language etc...but by the same argument, you would teach somebody math by handing them a calculus book and saying good luck. Sure it can be done, but man you're going to have to be unusually motivated. Also, C++ is NOT a truly object oriented language, it breaks very specific rules, such as multiple class inheritance, and I have seen this entirely throw people attempting to learn true OOP. The C++ guys walk in, think they can sleep through a C# class (and they can mostly), but when they get to the OOP part they're like, "umm...then it is not possible to do this pattern". That's right, it's not. Because that's not real OOP...this is. This leaves many learners with the notion that true OOP is nothing more than hamstrung C++, or that true OOP is too confining. So it's back to reference counting and debugging memory leaks. What fun for the beginner! Sure, if you can hammer through it, every other language will seem rather limited in what it offers insofar as control of your computing environment. But nowadays C++ has very specific uses, it is entirely superfluous for the majority of general applications. It takes years of coding experience to even begin exploiting the true power of C++...why start with it when you can give a learner far more success with almost any other language at all? I've actually joked; "so what language will you program (this that app) in?", "Oh, I'm going to do it all in C++!" * blink * "You're kidding right?" Ultimately the notion has nothing at all to do with what computing platform you think is evil, Unix history, or any of the rest of it...those are cult sentiments, not criteria for learning. Java and C# are outstanding academic languages, C# moreso because it is in an initial clean state and has learned extensively from other languages (what many call "ripping off"  . It has nothing to do with loyalty of any kind at all other than to the success of the learner, and that is the point. From there, if you wish to advance into C++, you have a much better foundation. You will learn C++ faster by not starting with it, I know it for a fact. However, since I said it's not a good idea, I'm sure the whole damn SL neophyte programming community will switch to C++. Eh, maybe you can learn from one another.
_____________________
** ...you want to do WHAT with that cube? **
|
|
CoCoNoNo Anubis
Skylark Mechanic
Join date: 28 Jun 2004
Posts: 40
|
07-01-2004 14:30
From: someone Originally posted by Ama Omega I'm gonna vote for Scheme. Scheme brothers unite!! Seriously though, the reason I rec'd is that its a great learning language. Sure it might not be totally useful by itself but it REQUIRES you to think about what you're doing as a programmer. Most languages these days are very polite about letting clueless people program, resulting in nasty code (the giant memory waste known as Java for instance).
|
|
Ironchef Cook
-
Join date: 23 Jun 2003
Posts: 574
|
07-01-2004 16:17
LOGO all the way! You can't beat turtle graphics.
|
|
Codswallop Cassidy
Registered User
Join date: 30 Dec 2003
Posts: 53
|
07-02-2004 11:09
Loved reading the comments so far. It depends on your goals as far as programming goes as someone in here said. Not sure where Rhys wants to go wtih this, I probably will not recommend C# as a beginning language because it really spoils you, i.e using a tree or a map but not knowing how it works. Java is the same way not to the same extent. I would definitely recommend the C/C++ route if you intend to go all the way with programming, or at least try it first. If the curve is too high for you to get "productive", then java, C# or .net may be the way to go. Python is most useful as a glue language, and not really a primary language to start with. My arguments supporting the C/C++ route 1) It is the "mother tongue" that all of those other languages are descended from, once you've learned that then learning the rest comes down to a reference and some experience 2) I disagree with many universities' approach nowadays starting with Java or some kind of simplified language, C++ is a good balance between MIT's starting with assembly approach or too simple Java-as-teach-language approach. Here's why. You dont really understand what you are doing when you are adding say two things together with a + until you've written overloaded operators, actually work with memory through pointers, memory allocation. The reason many people like Francis and myself dont really respect anyone until/unless they know C is because otherwise languages like Java are little different from LSL because they result in someone who would otherwise use libraries and "script" rather than being able to write their own functions and libraries, EFFECTIVELY. Overall I'd say if your aim is to get some kind of application running up and quickly in a language actually used in production then Java is probably your best bet, followed by VB.net since it can be confusing to beginners. Seeing as you have a backgroun in LSL already, C and Java (not C++, thats OOP) will actually be easier for you. if you can afford to though, go the full C/C++ route, because that in the end will take you the furthest 
|
|
Tcoz Bach
Tyrell Victim
Join date: 10 Dec 2002
Posts: 973
|
07-02-2004 18:29
You can be a lousy, uninformed coder in any language. OMG yes, even C++. Saying that C++ will make you a better programmer is like saying Java will make you an OO programmer. It will not.
Function pointers: C# uses delegates, which are function pointers without the pain. That, btw, comes from a very advanced C++ programmer.
Overloaded operators: standard stuff in C#. You can overload every kind of operator, as well as type casts, and it is taught as part of the language. This is common practice for any application of a language to, say, engineering and/or physics.
Managing memory: do you expliciitly manage your fuel to air ratio in your fuel injectors when driving a car? Would it make you a better driver..or a better mechanic (implying you need to be a mechanic to drive a car)? Being forced to manage memory explicitly will make you a better computer scientist, not a better programmer. Sort of like saying Yngwie Malmsteen is a better musician than James Taylor because the former is more technically aware of his guitar.
However, C# has the ability to allow you to override default garbage collection and manage your object disposal explicitly via suppressing "finalize" and invoking dispose. You do it when you need to...you are just not forced to do it. The fact that you are responsible for memory in a C++ application has caused drastic software problems even amongst the best C++ coders. It is a great strength, and weakness, of the language. Add to that smart pointers, the absolute disorganization of many native libraries, ATL templates...and your code bloats, and gets complex, and so on.
You also have the ability to invoke native code directly using pInvoke...so you can leverage C libraries and so on. When you do that, you are responsible for managing the disposal of those objects properly.
For the previous reasons I stated, stay away from VB.Net. C# is just as easy to learn, moreso in my opinion, and does not have the "implicit" flaws of VB.
Ultimately I think people are just uninformed as to the power of C#. Anybody who equates it arbitrarily with Java, or scripting, I'm certain of it. I worked with a team to move a very high volume trading app from C++ to C#. Not only was it less code and considerably easier to map/manage, it was faster. Java was also tried...and discarded, as it was too slow. It's a fact; I did a case study on it for the company I worked for at the time.
You know, C++ is like a fraternity. Yeah yeah come on board...but prepare for a rough ride to get there. Why?
Because we all did it. Why shouldn't you?
_____________________
** ...you want to do WHAT with that cube? **
|
|
Rysidian Rubio
Ruby Red Head
Join date: 14 Jan 2004
Posts: 263
|
02-03-2005 16:38
Wow it's 6 months after this Thread was started, and although I have had some health problems over the past few months, I have been learning alot of the fundamental basics of Programming (using C++), and am enjoying it immensely. i didn't say "learning C++" because what I set out to do is learn the fundamentals of programming so that I will have a good understanding before really having anything to apply it to. After re-reading the above posts I have to agree with alot of the comments made regarding using C++ as a starting point to learning programming. It has been hard to visualise how to put to use some concepts I have been learning about, and for anyone learning who wants to create something meaningful quickly well I'd NOT suggest using C++ as a starting point. However if you want a good grounding in Programming basics then I would recommend C++ as I have found it has given me a good understanding of how things work, rather than using things and not knowing why they work the way they do. If I didn't have LSL knowledge I still would have been able to learn using this book "C++ How to Program 4th edition" however I would have probably given up, because other than doing text book exercises I have not written a single program in C++. I simply don't know enough yet to write something meaningful. Some people have said bad things (above) about C++ as a starting language because of this, and it is a valid point IMO. I'm only half way through the book tho so I'm not expecting to start programming anything until I'm finished it. I just wanted to give an update of my progress to anyone interested.  Once again thanks to everyone who helped me choose what I think has been a good start to my programming future.
_____________________
"Bad News is - I cant script a thing.... Good News is - I buy less asprin than those who can " -Rosa Gardner
|
|
Malachi Petunia
Gentle Miscreant
Join date: 21 Sep 2003
Posts: 3,414
|
02-03-2005 17:19
C++ was a hack that got out of control. Bjarne was looking to create "C with classes" and did so as expediently as possible by making a C++ pre-preprocessor that emitted C code. It combined the worst qualities of C (shoot yourself in the foot pointer operations) with the worst qualities of an unplannned language that's been crushed by huge creeping featureism. It does retain the C heritage where one statement usually equates to a few lines of machine code so it does give you a "close to the metal" understanding. It is, however, way too complex for its own good and makes a lousy first language.
I've been glancing at Ruby recently which is much more clean than C++, has most of its expressive power, and doesn't require that you remember 15 different rules needed to make a properly constructed class.
|
|
Agatha Palmerstone
Space Girl
Join date: 23 Jan 2005
Posts: 185
|
02-03-2005 20:55
Actually, I think C is the way to go. Not because it's a great language (though I love it in some ways - anyone try Objective C? It's neat-o). But because it is the root syntax of other languages, and rather simple. Hell, avoid pointers if you like (use arrays). But you will get familiar with doing basic stuff, without having to memorize a lot of specific, weird crap.
Which is why I think Perl would be one of the worst for a beginner to learn with. A lifetime of bad habits begins that way. Perl is great if you are already a good programmer and you want a "swiss army knife" to do a whole lot of stuff the easy way. But as a learning tool, hell no.
C++ is kind of like C, but way too tricky and hacky for a beginner. (Operator overloading, for instance, is a sick idea.) Again, not so great to learn first.
Avoid Java until you no longer can. It's like C++ for lazy people. Which is a good thing sometimes, but again not so much for beginners.
Lisp is good for teaching you algorithmic thinking and data organizing, but I wouldn't teach it as a first language, maybe a second or third. Very few people actually do anything practical with it. (whether they should or not is another story...)
C# would be the other choice as the second or third, for teaching pure OOP concepts.
So, I reiterate... start with C.
|
|
Strife Onizuka
Moonchild
Join date: 3 Mar 2004
Posts: 5,887
|
02-03-2005 22:59
Oh my lord the bad habbits you can pickup from some of these languages.
The only bad habbit i picked up from C was manualy incrementing pointers.
C is like Class 4 river; takes time to learn to paddle. But once you have a decent mastry of it you can learn to paddle any other river with some ease.
_____________________
Truth is a river that is always splitting up into arms that reunite. Islanded between the arms, the inhabitants argue for a lifetime as to which is the main river. - Cyril Connolly
Without the political will to find common ground, the continual friction of tactic and counter tactic, only creates suspicion and hatred and vengeance, and perpetuates the cycle of violence. - James Nachtwey
|
|
Tcoz Bach
Tyrell Victim
Join date: 10 Dec 2002
Posts: 973
|
02-04-2005 01:15
LSL is the same way unless you get hooked to states.
_____________________
** ...you want to do WHAT with that cube? **
|