Archived

This topic is now archived and is closed to further replies.

What to learn?

This topic is 5279 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Ok, I think this thread might be helpful to everybody new to programming. I know the basics of programming, but now I want to go into the depth of one language; I''m starting out. What the language needs to be capable of is the following: -Teach you good programming structure. -Make you think logically (might be the same as structure) -It must NOT make it very dificult to learn new languages (new langs. like for example C#, C++, Java) So what do you think? Actually I was looking into the mentioned languages (C#, C++ or Java), but I don''t know which to choose. So which would be better when following the demands above? Another question which should NOT affect the choice I make: What language will get you the best salary. Thanks in advance,

Share this post


Link to post
Share on other sites
quote:
Original post by SumDude
C++, C# and Java are basically the same. And they all have their evil spots that are confusing.


Do you mind answering on my question? Your reply was just a comment. And c++ is much heavier than Java I know.

PLz read the demands I need for the language...

Share this post


Link to post
Share on other sites
The main problem I see with your requirements is that some of them could be considered mutually exclusive. For example, you want a language that teaches good structure but it also logical. What is logical?

C++ has great structure with its classes, but is it a logical way of thinking to seperate form from function? Some would say yes and some would say no.

Your third requirement requests that the language not make it difficult to learn other languages. Unless you are learning a language like BrainF*ck or Perl, most modern programming languages make it easy to pick up other languages. Actually, it''s not so much the language as it is the understanding of the theory behing the programming. It''s kind of like driving a car: there are a lot of different kinds out there that operate in lots of different ways under the hood... but on the surface they are all fairly similar. You learn to drive an automatic transmission and it''s just a little transition to learn to drive a manual.

If you learn C, C++ is a fairly significant leap, but not that difficult of one. So, that requirement could be considered mostly irrelevant. If you know how to program, learning the language is simple.

If you are choosing between C#, C++ or Java... my personal choice would be to choose C++ simply because it is so ubiquitous. Almost every programming book out there for game development is in C++. There are lots of books out there for the other languages you mentioned, but they arent nearly as widespread. Nearly every DirectX book that I''ve ever seen is for C++.

If you learn C++ very well, you will have a solid grasp on Object Oriented Programming and will be able to quickly move to other languages when the need arises.

As for salary, C++ wins hands down. Java is still mostly used for Internet based stuff like browser games and file sharing programs(like Limewire). C# is gaining in popularity, although I don''t use it so I can''t say too much about it. Most of the want ads for programmers are looking for C/C++ experience.

Hope this helps answer your questions...
Phosphorous

Share this post


Link to post
Share on other sites
C++ is the best way to learn how to program.

My progression was:

BASIC -> PASCAL -> C++ -> a hundred other languages


As much as I love BASIC and PASCAL, C++ is the standard.

-- Steve --

[edited by - spg on June 3, 2003 10:50:56 AM]

Share this post


Link to post
Share on other sites
Phosphorous. You say that C++ is learning you a great deal about OOP. But what about Java? It''s about the most object-oriented lang out there. Wouldn''t that teach you to structure a program more modernly and correctly?

AS when it comes to logical, I mean good strcute and being able to think out great solutions.

Share this post


Link to post
Share on other sites
quote:
Original post by Bongfilur
Phosphorous. You say that C++ is learning you a great deal about OOP. But what about Java? It''s about the most object-oriented lang out there. Wouldn''t that teach you to structure a program more modernly and correctly?



Nope. The language is not going to teach you anything about OO.

There''s an old saying: The determined programmer can write a FORTRAN program in any language.

It means that no language is going to stop you from writing bad and messy code if that''s what you''re inclined to write.

You''ll need a good book on software engineering for this. Try ''Code Complete.''

quote:

AS when it comes to logical, I mean good strcute and being able to think out great solutions.


Again, no language will teach you this. I would recommend you buy a book on algorithms or algirithm analysis once you''ve learned basic programming skills.

The book ''Introduction to Algorithms'' by by Cormen, Leiserson and Rivest (Commonly known as ''CLR'' by computer scientists) is a great book. Make sure you''re solid on your programming and mathematics before tackling it, though.


As for languages, I recommend that you start with C++, since it''s the industry standard right now. Once you''re comfortable with that, consider taking a look at LISP and perhaps Prolog to get familiar with alternative programming methods.

Share this post


Link to post
Share on other sites
Yes, Java is great for OOP, but you have to weigh it against what you want to use it for. You can build just about kind of program in Java. I don''t know the specifics as to why most people don''t program many games in Java, but I don''t see many out there. C++ just seems to be the best choice if you want to tap into the game dev community resources (tutorials, books... etc).

C++ and java are extremely similar in their approach to OOP, so learning one is just like learning the other.

Either have strict syntax guidelines, which force you to have good form (at least in that respect). Again, it''s a bit of trade off with certain languages. A language like pascal/delphi make to define each section of your program, which has the effect of providing more structured code.

However, one of the greatest strengths of C/C++ is it''s flexibility (with inheritance, polymorphism, overloaded operators and such). One could argue that such things make the language LESS structured. Sometimes, the more structured a language is, the more constrained it is.

As an overall solution, C++ is the way to go. Just like anything, there are a time and a place to use different languages, but if you know C++ there is very little that you won''t be able to program. I find the open-ended nature of C++ to be extremely condusive to thinking our great solutions.

Share this post


Link to post
Share on other sites
CheeseGrater,
Those are excellent points that you make about the language not teaching you the theory behind the code. However, I would say that you have to learn basic OOP principles if you are going to learn how to program in an OO language. You dont necessarily have to learn them well, but you are forced to learn them at some level.

The books you list are great resources... every would-be programmer should own them

Share this post


Link to post
Share on other sites
I would recommend Smalltalk. It''s "more OO" than Java (everything is an object, none of that primitive crap (though the VM does some magic behind the scenes to make SmallInteger have the speed of int, but it still looks like an object to the programmer)). It''s easy to learn (they claim the syntax can be written on a 3x5 card. Also, one of its original design goals was to be a language easy to teach to children). There''s also a lot of focus in the Smalltalk community on doing things the right way (i.e. OO purity) so it''s a great place to learn OO concepts. If you plan on making games, you''ll probably have to stick to 2D or interface with a C or C++ library for the 3D (Smalltalk is about as fast as Java).

Only requirement it might not fit is the ease of learning a new language. Smalltalk is much simpler than C#, C++, or Java, so it may be difficult getting used to all the extra things you have to worry about in those languages. Also, its syntax is not C based (like C#, C++, and Java) so, if you have trouble learning a new syntax, it may not be the best bet.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
I suggest C++ especially if you want to program games.

Share this post


Link to post
Share on other sites
OK, I was already starting on C++, so I''ll finish that as well.

But what if you are going to make GUI''s and stuff like that? Which language is most commonly used for that?
And what about databases?

And what about salary?
What would normally pay the best?:
-Game programming(I know this isn''t it)
-Databases
-Website
-GUI''s

And it''s the salary when you''re hired by a company (the average)

Thx,

Share this post


Link to post
Share on other sites
Basically people willing to do game programming for crap money and long hours are coming out of the walls (hell, I plan to do it when I get out of Uni next year), so that''s exactly what they tend to get.

Database Administration tends to get the big bucks, but it''s slightly more boring than watching evolution in action (in my opinion anyway - I''m sure there are some perverts who love that kinda thing *shudder*)

Since the Dotcom crash web development is pretty sparse, but I hear it''s picking up a little. None too stable a job though, and the pay will be fairly low. And you need to be able to snowboard to be taken seriously as a web developer.

And GUI''s are part of programming in general. I''d be very surprised if you could find a job specifically for coding GUIs.

I don''t have any numbers (especially not for Denmark), but you can probably hunt those down from professional magasines and stuff . . .

Share this post


Link to post
Share on other sites
quote:
Original post by Bongfilur
Doesn''t anybody know this and mind answering?


I think it should be quite clear right now that there is no answer.

Oh, and the answer is QBasic.

Share this post


Link to post
Share on other sites
quote:
Original post by YoshiN
quote:
Original post by Bongfilur
Doesn''t anybody know this and mind answering?


I think it should be quite clear right now that there is no answer.



You think so? I don''t. Cause a lot of people know about it in here. But anyway, I got what I searched for.

Thx a lot,

Share this post


Link to post
Share on other sites
quote:
Original post by Pike65
And you need to be able to snowboard to be taken seriously as a web developer.



Nah, I''m a great web developer and I''ve never snowboarded or even ski''d.


To answer the question before about salary, I agree that database administration pays the most of what was mentioned, especially when you get into Data Warehousing (I''m one of them freaks who loves database stuff =) ). Just do a search on say dice.com or monster.com and take a look at some of the salaries mentioned.

As for enjoyment, I''d rather do a mix of DB and application programming than do just one or the other. While I am rather good at designing a database schema (tooting my own horn) it would be boring if that was ALL I did.

As a suggestion, learn T-SQL as well as C++. The more you understand about the whole of an application or game, the more marketable you become.

*drops his two coppers*

~"What''''s this red button do?"

Share this post


Link to post
Share on other sites
C++ is a great language to use, like a lot of folks mentioned. But if you want to learn a language to learn good programming, don''t go for C++! It is complex, powerful, follows multiple paradigms, definitely not starters'' material.

I can''t really give you good pointers, unless I know your current programming knowledge. Do you already know a language? If not, I too would recommend Smalltalk, or maybe Scheme.

Also, I''d like to say that Java and C++ are mainly similar in syntax, but the underlying conceptual semantics are quite different.

Share this post


Link to post
Share on other sites
I''m not a total noob I''ve been scripting websites a lot, and I don''t find the programming concepts and principles difficult. I already started out on c++.

I can''t see why a complex language wouldn''t teach you good programming style. As a guy mentioned, I think it''s what you make it and not what language you choose...

Share this post


Link to post
Share on other sites
quote:
Original post by Bongfilur
I can''t see why a complex language wouldn''t teach you good programming style. As a guy mentioned, I think it''s what you make it and not what language you choose...



Because a simple (single paradigm) language is much purer in it''s execution of underlying concepts. Complexer languages allow you to mix different styles, and it''s harder to program right that way.

Share this post


Link to post
Share on other sites
quote:
Original post by spg
C++ is the best way to learn how to program.

My progression was:

BASIC -> PASCAL -> C++ -> a hundred other languages


As much as I love BASIC and PASCAL, C++ is the standard.

-- Steve --

[edited by - spg on June 3, 2003 10:50:56 AM]


C++ is the standard in teaching languages? Explain how C++ is anymore standard than Pascal, a language designed for teaching programming in?



This is the tale of a Northern Soul, looking to find his way back home

Share this post


Link to post
Share on other sites
Well, C++ is the main language for game programming. And thus it is also pretty "heavy". And if you know to use a language like C++, you will have the basic knowledge concerning programming principles.

Share this post


Link to post
Share on other sites