Page 2 of 3 [ 47 posts ]  Go to page Previous  1, 2, 3  Next

MarijnR
Yellow-bellied Woodpecker
Yellow-bellied Woodpecker

Joined: 10 May 2010
Age: 54
Gender: Male
Posts: 65
Location: the Netherlands

01 Oct 2010, 4:39 pm

Putting the language question aside, the best way of learning programming is by examples as was stated before. Even if the material itself is as dry as a desert, a decent instructor will be able to map the how and why of different classes and functions to real life examples. If you can switch instructors you could benefit greatly. Not many people are able to instinctively understand programming, it is hard for most people and I have seen a lot of students dropping out because of it.

Having programmed for years in a number of languages, I have to say C# is a bitter one. Not difficult when you are familiar with programming but it's bloated (too many predefined functions you do not need or can create yourself) and in my opinion not always following the logic you might expect.



LordoftheMonkeys
Veteran
Veteran

User avatar

Joined: 15 Aug 2009
Age: 34
Gender: Male
Posts: 927
Location: A deep,dark hole in the ground

01 Oct 2010, 6:50 pm

MarijnR wrote:
Having programmed for years in a number of languages, I have to say C# is a bitter one. Not difficult when you are familiar with programming but it's bloated (too many predefined functions you do not need or can create yourself) and in my opinion not always following the logic you might expect.


Agreed. I never liked "gadgets and gizmos" languages, with the exception of Javascript. I prefer ground-up languages like C/C++. C# doesn't teach you how to program; it only teaches you how to put together premade classes and widgets. The same goes for Java as well. Another thing I don't like about Java and C# is that they force you to use classes even when a procedural method would be much more convenient. Compare this to C++, which gives the programmer the choice of using either object-oriented or procedural programming to accomplish a task.


_________________
I don't want a good life. I want an interesting one.


takemitsu
Veteran
Veteran

User avatar

Joined: 29 Jun 2010
Age: 42
Gender: Male
Posts: 601

01 Oct 2010, 10:26 pm

I was decent with programming. I was pretty good at math, but applied math AKA physics, I wasn't so good at. I don't really understand, I knew the formulas and knew the ideas behind them, but couldn't put them together.

I took C++ years ago, what's different in C#?


_________________
b8d0f0/bbe4a6


Jookia
Velociraptor
Velociraptor

User avatar

Joined: 7 Jan 2007
Age: 28
Gender: Male
Posts: 410

02 Oct 2010, 4:03 am

It removes the need to use OpenGL as on Windows there's only one graphics API you need.



LordoftheMonkeys
Veteran
Veteran

User avatar

Joined: 15 Aug 2009
Age: 34
Gender: Male
Posts: 927
Location: A deep,dark hole in the ground

02 Oct 2010, 7:28 am

takemitsu wrote:
I took C++ years ago, what's different in C#?


There is about as much similarity between C++ and C# as there is between Javascript and Python. They both have their roots in C, but they are completely different languages. Don't be fooled by the fact that they have similar names.


_________________
I don't want a good life. I want an interesting one.


Jookia
Velociraptor
Velociraptor

User avatar

Joined: 7 Jan 2007
Age: 28
Gender: Male
Posts: 410

02 Oct 2010, 7:55 am

Kinda off the rails of your C# discussion, I'm annoyed at Visual C++. I opened it up and I'm bombarded with menus, options, I had to find where to turn whitespace on and edit my tab settings on the Internet. I can't wait to get it working so I can go sit back in GNU/Linux with my terminal and simple text editor, I've gotten to the point where Windows makes me feel uncomfortable.



mcg
Veteran
Veteran

User avatar

Joined: 26 Jan 2010
Age: 34
Gender: Male
Posts: 538
Location: Sacramento

02 Oct 2010, 1:08 pm

takemitsu wrote:
I was decent with programming. I was pretty good at math, but applied math AKA physics, I wasn't so good at. I don't really understand, I knew the formulas and knew the ideas behind them, but couldn't put them together.

I took C++ years ago, what's different in C#?

C# doesn't have explicit pointers, having reference types instead. Also, there is no multiple inheritance, but it has these things called interfaces that are kind of like abstract classes, and you can make a class implement multiple interfaces. It is pretty similar to Java in both these respects. Other than that, C++ and C# have almost the exact same feature set (well actually C#'s has a lot of additional features, but you don't have to use them). If you know C++, C# can be learned in minutes.

Jookia wrote:
Kinda off the rails of your C# discussion, I'm annoyed at Visual C++. I opened it up and I'm bombarded with menus, options, I had to find where to turn whitespace on and edit my tab settings on the Internet. I can't wait to get it working so I can go sit back in GNU/Linux with my terminal and simple text editor, I've gotten to the point where Windows makes me feel uncomfortable.
You can edit in your editor of choice (vim for me) and compile from the command line (Visual Studio actually just invokes the command line compiler). Nobody uses Visual Studio for complex projects, it's way too slow.

LordoftheMonkeys wrote:
Agreed. I never liked "gadgets and gizmos" languages, with the exception of Javascript. I prefer ground-up languages like C/C++. C# doesn't teach you how to program; it only teaches you how to put together premade classes and widgets. The same goes for Java as well.
I learned tons of stuff in classes taught in Java. Just because there's a class library doesn't mean you have to use it. Those are not intended to teach you programming, they are intended to reduce the amount of time professional programmers spend implementing commonly used data structures and other things like threading and concurrency (locks, mutexes, etc). This allows them more time to spend coding functionality specific to their own applications. Code re-use is a good thing, especially when the code you are re-using is painstakingly profiled and optimized by someone other than yourself.

LordoftheMonkeys wrote:
Another thing I don't like about Java and C# is that they force you to use classes even when a procedural method would be much more convenient. Compare this to C++, which gives the programmer the choice of using either object-oriented or procedural programming to accomplish a task.
No they don't. In fact, amateur Java and C# programmers are notorious for writing procedural programs. Anyways, until you start using polymorphism, OOP is pretty much just a way of scoping regular procedural programming. Look in a C++ object file. A non-static method is just a regular C function with some crazy name decoration and one additional parameter (the this pointer).



Ancalagon
Veteran
Veteran

User avatar

Joined: 25 Dec 2007
Age: 45
Gender: Male
Posts: 2,302

02 Oct 2010, 4:50 pm

mcg wrote:
LordoftheMonkeys wrote:
Another thing I don't like about Java and C# is that they force you to use classes even when a procedural method would be much more convenient. Compare this to C++, which gives the programmer the choice of using either object-oriented or procedural programming to accomplish a task.
No they don't.

Yes they do. Java at least (I don't know anything directly about c#). You can't even do "hello world" without a pointless wrapper class.

Quote:
In fact, amateur Java and C# programmers are notorious for writing procedural programs.

I'm sure they do a lot of that, but I don't think 'notorious' is quite the right word. If you're writing "hello world" or something else really small because you're trying to learn programming in general, OOP is just a pointless complication.

Actually, I'm having a hard time seeing the point of OOP for larger programs. Encapsulation is a good idea, but it isn't unique to OO. Nounifying everything doesn't really buy you anything. Inheritance just breaks encapsulation and makes pieces of your code interdependent. The 'is-a vs. has-a' distinction is complete hogwash as far as I can tell.

I rather like the duck-typing idea though, and the polymorphism thing might be useful.


_________________
"A dead thing can go with the stream, but only a living thing can go against it." --G. K. Chesterton


Jookia
Velociraptor
Velociraptor

User avatar

Joined: 7 Jan 2007
Age: 28
Gender: Male
Posts: 410

02 Oct 2010, 7:47 pm

Ancalagon wrote:
Actually, I'm having a hard time seeing the point of OOP for larger programs. Encapsulation is a good idea, but it isn't unique to OO. Nounifying everything doesn't really buy you anything. Inheritance just breaks encapsulation and makes pieces of your code interdependent. The 'is-a vs. has-a' distinction is complete hogwash as far as I can tell.

I rather like the duck-typing idea though, and the polymorphism thing might be useful.


Abstraction and modular design. Anyway, I'm designing a game engine in C++. Sure, I could've done it in C, but it's better to write something like that in C++ due to classes.



Titangeek
Veteran
Veteran

User avatar

Joined: 22 Aug 2010
Age: 30
Gender: Male
Posts: 7,696
Location: somewhere in the vicinity of betelgeuse

02 Oct 2010, 8:14 pm

isn't this getting a bit off topic :?:


_________________
Always be yourself, express yourself, have faith in yourself, do not go out and look for a successful personality and duplicate it.
- Bruce Lee


mcg
Veteran
Veteran

User avatar

Joined: 26 Jan 2010
Age: 34
Gender: Male
Posts: 538
Location: Sacramento

02 Oct 2010, 9:37 pm

Ancalagon wrote:
mcg wrote:
LordoftheMonkeys wrote:
Another thing I don't like about Java and C# is that they force you to use classes even when a procedural method would be much more convenient. Compare this to C++, which gives the programmer the choice of using either object-oriented or procedural programming to accomplish a task.
No they don't.

Yes they do. Java at least (I don't know anything directly about c#). You can't even do "hello world" without a pointless wrapper class.

You still have a static main, though. Sure, it has to belong to class, but in this context the class is nothing more then a name that gets pre-pended to the name of your function in compiled code. You don't have to declare a single non-static function.

Ancalagon wrote:
Quote:
In fact, amateur Java and C# programmers are notorious for writing procedural programs.

I'm sure they do a lot of that, but I don't think 'notorious' is quite the right word. If you're writing "hello world" or something else really small because you're trying to learn programming in general, OOP is just a pointless complication.

Actually, I'm having a hard time seeing the point of OOP for larger programs. Encapsulation is a good idea, but it isn't unique to OO. Nounifying everything doesn't really buy you anything. Inheritance just breaks encapsulation and makes pieces of your code interdependent. The 'is-a vs. has-a' distinction is complete hogwash as far as I can tell.

I rather like the duck-typing idea though, and the polymorphism thing might be useful.
Inheritance does not break encapsulation if implemented correctly. All public or protected methods and properties should be part of your classes interface.

Have you ever wrote a large app? You don't really realize how useful OO design patterns are until you start using them.



Avarice
Veteran
Veteran

User avatar

Joined: 5 Oct 2009
Age: 31
Gender: Male
Posts: 1,067

07 Oct 2010, 12:00 am

Perhaps try Python. I've starting learning programming and it seems like a well put together language. I actually finished my first program today using it, it takes Imperial measurements (feet, inches, pounds, as well as Fahrenheit) and spits them out as metric and Celcius. I got tired of not understanding what people were saying so this should help with that.

I agree that it's a difficult thing to study, though I'm doing it alone using online tutorials, so far I haven't had too much trouble though. I don't know anything about C#, though I know some of the basics in C.



Jookia
Velociraptor
Velociraptor

User avatar

Joined: 7 Jan 2007
Age: 28
Gender: Male
Posts: 410

07 Oct 2010, 3:31 am

If you really want to learn programming, learn C. That's all I can say. No silly business.



ruveyn
Veteran
Veteran

User avatar

Joined: 21 Sep 2008
Age: 87
Gender: Male
Posts: 31,502
Location: New Jersey

07 Oct 2010, 4:55 am

Jookia wrote:
If you really want to learn programming, learn C. That's all I can say. No silly business.


Pascal is prettier, but C (just plain old C) is more generally used. So I agree. If one has to start with a high level procedural language, C is the one.

ruveyn



Avarice
Veteran
Veteran

User avatar

Joined: 5 Oct 2009
Age: 31
Gender: Male
Posts: 1,067

07 Oct 2010, 7:28 am

ruveyn wrote:
Jookia wrote:
If you really want to learn programming, learn C. That's all I can say. No silly business.


Pascal is prettier, but C (just plain old C) is more generally used. So I agree. If one has to start with a high level procedural language, C is the one.

ruveyn


Argh... but it's so difficult. I admit, I know almost nothing about programming, and my most complex project is the one which converts Imperial measurements to metric ones but C just seemed too hard to bother with as a first language. I had the compliler running and some basic programs which added numbers together and showed the results before I couldn't be bothered continuing. It didn't help I tried learning it late at night either...



Jookia
Velociraptor
Velociraptor

User avatar

Joined: 7 Jan 2007
Age: 28
Gender: Male
Posts: 410

07 Oct 2010, 7:50 am

Avarice wrote:
Argh... but it's so difficult. I admit, I know almost nothing about programming, and my most complex project is the one which converts Imperial measurements to metric ones but C just seemed too hard to bother with as a first language. I had the compliler running and some basic programs which added numbers together and showed the results before I couldn't be bothered continuing. It didn't help I tried learning it late at night either...


Programming is difficult because you're telling a computer what to do. Nobody's forcing you to learn.