PDA

View Full Version : Hm, Programming mentality...?



rikai
December 22nd, 2005, 09:58 PM
Well...

I was just sitting here thinking...
I'm in a (possibly) not so unique position.

Y'see, I REALLY want to help in the develpment of Ubuntu.
There are a lot of things i'd like to try and a lot of things i'd like to help on.
I have an interest in programming (at this point, c), and that is what leads me to my dilema...

I want to program, but I have no means by which to learn.
As i've often seen in the Linux community, the generic response when asking how we can learn to program and help, is to point us to a C tutorial, or reccomend a book.
This, in itself, isn't a bad thing, but it doesnt take one thing into account. Some poeple just can't, because of the way their brains are wired, use these resources effectivly.

For example, if I try to follow a tutorial, or read a book, after a while, my attention starts to wander, i get distracted, put the book down or wander of to some irc channel.
When it comes ot written information, not coming form myself, that doesn't involve a lot of using my imaination, I become easily disinterested.

This is extremly frustrating, because i do, indeed, want to learn. But because of the way i learn, i cant help.

Some people i've spoken with have suggested that i apply for a high schoo/college course on programming, which IS a very good idea. However, since i'm rather low income, i cant devote the money to something of that sort, and from what I hear, it still requires lots and lots of book reading.

So, i guess what i'm asking is...
Is there anything ubuntu can do for us potentials who have problems reading long, and often uninteresting tutorials?
Does anyone have any suggestions as to how someone could go about remedying this?
Am I the only one with this problem?

(Hopefully this is the right place to post this)

- Rich

Iandefor
December 22nd, 2005, 10:32 PM
Perhaps you could look at the curriculum of your local community college?
I know, lame answer, but it might actually be a useful resource.

cwaldbieser
December 23rd, 2005, 12:48 AM
Well...

I was just sitting here thinking...
I'm in a (possibly) not so unique position.

Y'see, I REALLY want to help in the develpment of Ubuntu.
There are a lot of things i'd like to try and a lot of things i'd like to help on.
I have an interest in programming (at this point, c), and that is what leads me to my dilema...

I want to program, but I have no means by which to learn.
As i've often seen in the Linux community, the generic response when asking how we can learn to program and help, is to point us to a C tutorial, or reccomend a book.
This, in itself, isn't a bad thing, but it doesnt take one thing into account. Some poeple just can't, because of the way their brains are wired, use these resources effectivly.

For example, if I try to follow a tutorial, or read a book, after a while, my attention starts to wander, i get distracted, put the book down or wander of to some irc channel.
When it comes ot written information, not coming form myself, that doesn't involve a lot of using my imaination, I become easily disinterested.

This is extremly frustrating, because i do, indeed, want to learn. But because of the way i learn, i cant help.

Some people i've spoken with have suggested that i apply for a high schoo/college course on programming, which IS a very good idea. However, since i'm rather low income, i cant devote the money to something of that sort, and from what I hear, it still requires lots and lots of book reading.

So, i guess what i'm asking is...
Is there anything ubuntu can do for us potentials who have problems reading long, and often uninteresting tutorials?
Does anyone have any suggestions as to how someone could go about remedying this?
Am I the only one with this problem?

(Hopefully this is the right place to post this)

- Rich

Do you have a local Linux User's Group (LUG)? Someone there might be able to help tutor you. There might also be local community centers that offer that kind of training.

ltmon
December 23rd, 2005, 02:25 AM
I guess programmers can't from the physical remoteness of the Internet do much more than recommend reading. But I get your point that most reading material is dry, badly written and long winded.

I'll do my best at pointing out some "lighter" tutorials, that are still great learning references.

I have always found the following an enjoyable and easy to read introduction to programming:

http://pine.fm/LearnToProgram/?Chapter=00

It's based on Ruby, which is nice, neat, easy to use and still practical enough to do real, live programs with it. Ruby is also very consistent, so you don't have silly things like: "This function behaves like X, except in cases A, B, C..." to impede your learning.

The writing is simple and easy to read. The focus is on programming concepts, not learning the ins and outs of a single language.

If you like really (really) quirky and funny tutorials there's the venerable "Why's (Poignant) Guide to Ruby": http://poignantguide.net/ruby/

L

Leif
December 23rd, 2005, 02:54 AM
instead of diving in at the deep end and helping develop 'ubuntu', create/join a smaller project that interests you. there are hundreds of projects at sourceforge that'd be happy to get extensions, bug fixes etc. to their code, while still being small enough for you to quickly get tho know the software. otherwise, come up with something that interests you and start working on it. the best way to learn a language is to try and build something with it.

Jimmey
December 24th, 2005, 08:10 PM
Yeah, I agree.

Although not a programming expert myself, I've learned some, and understand that books, and internet tutorials, even when they do contain interesting topics, can often be badly written, and generally un-appealing.

I take pride from the fact that what I have learned, I've learned myself, and though, as I've mentioned, I'm no expert, to learn what I have ( I personally believe :mrgreen: ) is an achievement in itself.

It easy to understand that most tutorials will cover what the author's intrested in - So although learning from most tutorials can be good practice, it's usually...No fun. And it's the same with books.

For instance, I bought a C++ book. Which is great. Except from I've read 172 pages, and gotten a bit bored. The examples are....Naff. Which doesn't help.
And now, I can't think of anything interesting and challenging to work on, which is where I was relying on the book to help me. And so I've stopped learning, pretty much all together.

One day, when I've the tolerance, I'll carry on. But, had the book been any good, I'd already be 10x better.

I'm starting to realise that this is some craply constructed reply....So I'll round it up.

I, along with many other people, who I'm sure will agree, can STRONGLY recommend Python. It's great - There's nothing more to it. Because of it's simplicity, once you learn the basics, it's easier for you to work on projects that YOU'RE interested in. Not to say that it lacks usefullness...

Damn...I'm just about done. *Breathes in*

Jimmey

dcraven
December 24th, 2005, 09:28 PM
Although I appreciate what you are saying, it sounds to me like you don't want to help enough to actually do something about it. Now that sounds mean or elitist or something, but it's not meant to be so. Nobody is obligated to do anything to further the cause. Is it possible that you want to have the desire to help out? But can't muster enough of that desire up?

Seems to me that if you really did want to do something, you'd bite the bullet and read a free tutorial, or do some other form of research on the subject whatever it may be. Your desire to help is apparently weaker than your desire to not help. Again, that's okay. You are not obligated to, nor should anyone make you feel that you are.

Cheers,
~djc

Mike Buksas
December 24th, 2005, 11:12 PM
It sound's like you may do better with a learn by doing approach. This is one of the reasons that I like Python. It is much easier to experiment with by using the interactive intrepeter. Once you've read even a small part of a tutorial, try what you've read out immediately, before you lose interest.

You can, of course, do this with any language, but I think it's easier with Pyhton. Keep an editor open and create many short programs, after reading small chunks of material. Don't wait for big "interesting" problems to present themselves. With more immediate feedback about what you're learning, you may find that you loose interest less quickly.

There may be other ways you can help out the Ubuntu project as well, even if programming doesn't turn out to be your cup of tea.

Jimmey
December 25th, 2005, 04:23 PM
Oops.

Jengu
December 26th, 2005, 05:55 AM
I agree with Mike. Start with a language like Python, because you can get instant gratification -- you're able to very quickly write code that does useful things that you can actually see, compared to other languages.

Another possible approach is find Starcraft or Warcraft III in a used bin somewhere and learn triggers. It's infact basic programming you do through a GUI. Warcraft III even lets you convert the triggers into a language specific to the game for editing by hand. Then try to make maps with fancier and fancier functionality. I'm really a better programmer because of those games.

Starcraft was cool from a 'do more with less' point of view. The triggers don't have a ton of functionality, and the editor doesn't have any concept of variables, so if you need variables you have to fake them by storing numbers in unused players mineral counts and stuff like that. So although limiting, it can force you to see what coding with limited resources maybe like.

rikai
December 26th, 2005, 05:58 PM
Okay, sorry for not replying ot you al sooner, but i've been a bit busy with the holidays and all.
Lets see if i cant respond to everyone..


Perhaps you could look at the curriculum of your local community college?
I know, lame answer, but it might actually be a useful resource.
I've looked into the community college, and i've decided that in the fall, even if i've learned to program by then.
At this point, it's jsut not feasible, as i'm trying to help support my family by working a lot, and the classes cant conform to my schedule, or vice versa.


I guess programmers can't from the physical remoteness of the Internet do much more than recommend reading. But I get your point that most reading material is dry, badly written and long winded.

I'll do my best at pointing out some "lighter" tutorials, that are still great learning references.

I have always found the following an enjoyable and easy to read introduction to programming:

http://pine.fm/LearnToProgram/?Chapter=00

It's based on Ruby, which is nice, neat, easy to use and still practical enough to do real, live programs with it. Ruby is also very consistent, so you don't have silly things like: "This function behaves like X, except in cases A, B, C..." to impede your learning.

The writing is simple and easy to read. The focus is on programming concepts, not learning the ins and outs of a single language.

If you like really (really) quirky and funny tutorials there's the venerable "Why's (Poignant) Guide to Ruby": http://poignantguide.net/ruby/

L

I disagree on the . It'd be much better to, say, talk to a programmer over irc. You'd be able to ask questions about what you don't understand and have it explained to you. Unfortunately, not many programmers are willing, or have the time to do so. Nor should they feel obligated to.

I took a quick glance at the ruby tutorial, seemed like a much easier raed than most of the stuff i've come across, i'll have to look at it more in depth later. ;)

i'll have to take a look at the quirky guide when i've got a chance.

Anyway, thanks for telling me about ruby, it seems like it's rather easiy to get into.


instead of diving in at the deep end and helping develop 'ubuntu', create/join a smaller project that interests you. there are hundreds of projects at sourceforge that'd be happy to get extensions, bug fixes etc. to their code, while still being small enough for you to quickly get tho know the software. otherwise, come up with something that interests you and start working on it. the best way to learn a language is to try and build something with it.

Oh, i guess i wasn't really clear....
I didnt mean helping develop ubuntu directly, at least not for a long while. That's be just insane for a newbie programmer. Rather, what i meant was, helping develop some of the prgrams that are/could be included in the distro.
For example, i've taken an intrest in the bittorrent client Rufus, and i'd rather like to help with that, as i feel that after a few issues are would out, it could serve much better as the default bittorrent client for ubuntu, since it resolves many of the complains people have with the current clients.

since everyone seems to be telling to me python is a really good language to start with, and Rufus is written in python.... looks like helping with Rufus is going to be my entry point. ;)


Yeah, I agree.

Although not a programming expert myself, I've learned some, and understand that books, and internet tutorials, even when they do contain interesting topics, can often be badly written, and generally un-appealing.

I take pride from the fact that what I have learned, I've learned myself, and though, as I've mentioned, I'm no expert, to learn what I have ( I personally believe :mrgreen: ) is an achievement in itself.

It easy to understand that most tutorials will cover what the author's intrested in - So although learning from most tutorials can be good practice, it's usually...No fun. And it's the same with books.

For instance, I bought a C++ book. Which is great. Except from I've read 172 pages, and gotten a bit bored. The examples are....Naff. Which doesn't help.
And now, I can't think of anything interesting and challenging to work on, which is where I was relying on the book to help me. And so I've stopped learning, pretty much all together.

One day, when I've the tolerance, I'll carry on. But, had the book been any good, I'd already be 10x better.

I'm starting to realise that this is some craply constructed reply....So I'll round it up.

I, along with many other people, who I'm sure will agree, can STRONGLY recommend Python. It's great - There's nothing more to it. Because of it's simplicity, once you learn the basics, it's easier for you to work on projects that YOU'RE interested in. Not to say that it lacks usefullness...

Damn...I'm just about done. *Breathes in*

Jimmey

The reply is hardly badly constructed.
It's nice to know that there are people out there that sympathize with me.

Yeah, with refrence to the above response to Leif, i'm thinking i'm going to start learning Pythn and Ruby now, and come back to C later when i have a better grasp of programming fundementals.

Thanks for the input.


Although I appreciate what you are saying, it sounds to me like you don't want to help enough to actually do something about it. Now that sounds mean or elitist or something, but it's not meant to be so. Nobody is obligated to do anything to further the cause. Is it possible that you want to have the desire to help out? But can't muster enough of that desire up?

Seems to me that if you really did want to do something, you'd bite the bullet and read a free tutorial, or do some other form of research on the subject whatever it may be. Your desire to help is apparently weaker than your desire to not help. Again, that's okay. You are not obligated to, nor should anyone make you feel that you are.

Cheers,
~djc

I do indeed want to help, i'm just having a hard time surmounting the opstacles.
I think a change of focus on the language, and another push to learn the new language may help me immensly though, since C seems to not be a language for beginners.


It sound's like you may do better with a learn by doing approach. This is one of the reasons that I like Python. It is much easier to experiment with by using the interactive intrepeter. Once you've read even a small part of a tutorial, try what you've read out immediately, before you lose interest.

You can, of course, do this with any language, but I think it's easier with Pyhton. Keep an editor open and create many short programs, after reading small chunks of material. Don't wait for big "interesting" problems to present themselves. With more immediate feedback about what you're learning, you may find that you loose interest less quickly.

There may be other ways you can help out the Ubuntu project as well, even if programming doesn't turn out to be your cup of tea.

Another vote for python. eh?
Looks like i'll be checking out this langauge asap. ;)
As for the learn by doing, i think you're right. I jsut foind it hard doing anything with c with my limited knowledge.
hopefully python will have a less steep learning curve.
An yes, i realize that.
I've been poking around abit over on the ubuntupeople site, which has to to with ubuntu marketing. ;)


Oops.
Oops indeed.... *grin*


I agree with Mike. Start with a language like Python, because you can get instant gratification -- you're able to very quickly write code that does useful things that you can actually see, compared to other languages.

Another possible approach is find Starcraft or Warcraft III in a used bin somewhere and learn triggers. It's infact basic programming you do through a GUI. Warcraft III even lets you convert the triggers into a language specific to the game for editing by hand. Then try to make maps with fancier and fancier functionality. I'm really a better programmer because of those games.

Starcraft was cool from a 'do more with less' point of view. The triggers don't have a ton of functionality, and the editor doesn't have any concept of variables, so if you need variables you have to fake them by storing numbers in unused players mineral counts and stuff like that. So although limiting, it can force you to see what coding with limited resources maybe like.

I just so happen to own both of those marvelous games. ;)
That Settles it then.
Python it is. Then ruby. Then i'll see where i stand and go from there.

Thank you all for the input/criticism/contructive suggestions, and dont take this lengthy reply as a sign to stop posting, i'm always welcoming more feedback. :KS
Sorry again that it took so long to reply.

*pants from all the talking*

Oh, might anyone reccomend some non-dry python tutorials?

- Rich

David Marrs
December 27th, 2005, 06:42 PM
It's not very easy to get into contributing to a project from the position of a newbie. Even for a modest project, once you've learned the language you've got to learn the api, the make utilities, cvs, and so on. Not to mention just getting into the code itself. Think of it as a long-term thing and your head should hurt less.

As far as getting into programming itself goes, Python's already been mentioned. You might also want to consider something like HTML + javascript, which also gives instant gratification and allows you to get quite sophistocated.

CompiledMonkey
December 27th, 2005, 09:37 PM
One thing that has not been mentioned and I think is certainly important, is that software engineering is a "boring" discipline. Now, I quoted boring because to those that are really into it, such as myself, it's a labor of love and excitement. However, it's tough to get into and no matter how good you are, you'll always end up reading to continue your pursuit of knowledge. None of us know it all and it continuously evolves, so we must as well.

My advice is simple; stick with your reading. If you miss a couple pages here and there because you tend to space out, that's ok, keep on reading. You'll find that what sticks are the things that catch your interest along the way. So when you're coding up basic solutions with those interesting pieces, you'll realize you don't understand something specific in the process but at least you got started on something! Go back and read that part in the book again because you were probably spacing out when it was explained. Then, when you're finished with the "intro" part of a book (generally Part I in most language specific books), go back and read it all again. Why, you ask? Because you didn't get every piece of information covered, nobody does. Those language references have a TON of information and chances are you missed about half of it the first time through.

Lastly, good luck. It's always nice to hear someone who wants to pick up programming for the good of the community. I want to start working on some open source projects myself in the near future, as long as they don't get in the way of work and graduate school.

Lord Illidan
December 27th, 2005, 09:47 PM
I am in your predicament. I basically know some pascal, very little C and about the same C++, quite little.

Point is, I want to make an open source project in C++, but I wonder if there's anyone here who can point me to a good tutorial in the subject. Not too dry, (I don't care how long it is), and well explained.

gray-squirrel
December 28th, 2005, 06:02 PM
I am in your predicament. I basically know some pascal, very little C and about the same C++, quite little.

Point is, I want to make an open source project in C++, but I wonder if there's anyone here who can point me to a good tutorial in the subject. Not too dry, (I don't care how long it is), and well explained.

The only C and C++ I've dealt with was when I was in college, and the last programming class I took was about five years ago.

So that I don't misunderstand your request, do you want a good tutorial on C++ programming, or just on developing open source projects? Also, do you prefer on-line tutorials? The reason I ask is that I've discovered in Microcenter several weeks ago a few books on how to develop open source projects as well as books on C++ programming.

I do plan to start programming again soon, for myself, as soon as my own schedule becomes clearer (which is why I have posted for the first time in quite a while), and I thought it was a simple as writing, compiling, debugging, etc. until I started hearing about things like CVS.

Lord Illidan
December 28th, 2005, 06:15 PM
The only C and C++ I've dealt with was when I was in college, and the last programming class I took was about five years ago.

So that I don't misunderstand your request, do you want a good tutorial on C++ programming, or just on developing open source projects? Also, do you prefer on-line tutorials? The reason I ask is that I've discovered in Microcenter several weeks ago a few books on how to develop open source projects as well as books on C++ programming.

I do plan to start programming again soon, for myself, as soon as my own schedule becomes clearer (which is why I have posted for the first time in quite a while), and I thought it was a simple as writing, compiling, debugging, etc. until I started hearing about things like CVS.

Thanks for the interest. No, basically I want a good tutorial on C++ Programming in the Linux environment, you know with Linux libraries and headers. Yeah, preferably online tutorials..

gray-squirrel
December 28th, 2005, 06:48 PM
Thanks for the interest. No, basically I want a good tutorial on C++ Programming in the Linux environment, you know with Linux libraries and headers. Yeah, preferably online tutorials..

There is Cprogramming.com (http://www.cprogramming.com). Much of it is C++ in general, but there a few topics - such as graphics - which are Windows or DOS-specific. There is a *nix (http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?subject=1045780608) section and a section about the Standard Template Library, though.

I'll see if I can find a Linux-specific site or two. . . although I think the only thing different between coding in Linux and coding in Windows is that they usually use different libraries. However, I have seen cross-platform libraries recently.


Update: The g++ (http://gcc.gnu.org/onlinedocs/gcc-4.0.2/cpp/Header-Files.html#Header-Files) manual (for C++) should be helpful in learning about headers.

Jimmey
January 1st, 2006, 04:49 PM
If, as you've said, you'd appreciate some help over an IM client, I'm more than willing to offer it ( although that IM client's limited to MSN ( jimmey1000@hotmail.com ), and maybe AIM ).

I'd like to teach you what I know of Python - I could use a programming buddy, to be honest.

gray-squirrel
January 3rd, 2006, 03:58 AM
I just got another lead from the KDE Programming Guide (http://quality.kde.org/develop/howto/howtohack.php): you may also want to try Thinking in C++ (http://mindview.net/Books/TICPP/ThinkingInCPP2e.html) by Bruce Eckels. There is an e-book edition which can be downloaded and viewed in a Web browser.

I downloaded it last week and just installed it a few minutes ago. So far, the material is easy to understand.

The KDE Programming Guide also has other suggestions to help certain people get prepared, so to speak, for computer programming.

rko618
May 28th, 2007, 09:06 AM
After reading through the replies everyone seems like they are generally missing the point of his post. He is not asking for programmer resources as so many of you have generously provided. He is stating that he has an attention spam problem and is wondering how he can do something about it.

I must say I have the same problem. I generally find it very hard to stay focused on a single task and my mind goes all over the place and my eyes go all over the Internet. 2 hours later I'll snap out of it and realize I haven't progressed at all in the last two hours. I'm afraid I don't have any advice for you though. The best I can do is just never give up. :-/

ankursethi
May 28th, 2007, 02:30 PM
Imagine reading a physics book in the middle of, say, a strip club. Are you going to learn any physics or are you going to watch the ... ahem ... "fun"? Obviously the latter. It's the same with the Internet. There are way too many distractions : IM, blogs, news, forums and that other thing people don't generally talk about around here. Studying the same thing in, say, a big cardboard box would probably help you get through the book quite quickly.

My suggestion is this : get a good book. A nice, concise book that teaches you only and only the basics of a language. Learn the basics from that book and then start a small project of your own. If you think you need help with external libraries, look for online tutorials.