PDA

View Full Version : Thinking of learning a compuer language. Suggestions?



mr32123
January 18th, 2008, 02:49 AM
Right, so I decided I would try to learn a comptuer language in my spare time. Thinking of going with C or something simple to start out with.

Does anybody have any recommendations for languages? Also, Where did you learn and what did you use?

rfruth
January 18th, 2008, 02:53 AM
C <any> is good

been learning it myself for over 10 years now ...

bufsabre666
January 18th, 2008, 02:54 AM
id say python is the easiest to teach yourself, im teaching it to me, the best books are from www.greenteapress.com

they release pdf copies of their books under the gpl and they offer python java c and something else

DeadSuperHero
January 18th, 2008, 02:56 AM
Python is great for starters, I'm currently learning it.
Java's pretty good, also. However, I wouldn't call it a beginner's language...
You might want to check out the Kross stuff that the KDE devs have, it's a coding-independent framework that allows you to code regardless of what language. (I think)
http://en.wikipedia.org/wiki/Kross_%28KDE%29

DoktorSeven
January 18th, 2008, 03:47 AM
I definitely would recommend C to anyone. Yes, it's very difficult to learn, but if you do, other languages are cake in comparison. If you can get pointers, you can get anything. :)

If C scares you, go with Python. It's a great language.

Æniad
January 18th, 2008, 03:54 AM
I'm currently reading Python for dummies. (http://www.amazon.com/Python-Dummies-Computer-Tech/dp/0471778648)

days_of_ruin
January 18th, 2008, 04:02 AM
id say python is the easiest to teach yourself, im teaching it to me, the best books are from www.greenteapress.com

they release pdf copies of their books under the gpl and they offer python java c and something else

Wow I saw one of those books in barnsandnoble.
I had no idea they were free:)

Æniad
January 18th, 2008, 04:06 AM
Wow I saw one of those books in barnsandnoble.
I had no idea they were free:)

I wasn't aware GNU applied to literature.

bufsabre666
January 18th, 2008, 04:11 AM
I wasn't aware GNU applied to literature.

i know i was surrprised too but i love those books, its really well explained and good for people with no expierence ((i have alot of c++ and im in javascript2 class but im still no where near experiienced so its nice))

p_quarles
January 18th, 2008, 04:14 AM
i know i was surrprised too but i love those books, its really well explained and good for people with no expierence ((i have alot of c++ and im in javascript2 class but im still no where near experiienced so its nice))
They are free, but not under the GPL. Rather, they're under the GFDL, or GNU Free Documentation License. All of Wikipedia is released under the same license.

mr32123
January 18th, 2008, 04:15 AM
So I see its either C or Python. Are either of them OS specific? Or what OS's will the programs I write run on? I normally use XP during the semester but I play around with Linux on breaks. What other advantages does each language have?

I like the greenteapress books, but I can't stand reading off of the computer screen. I'll just have to wait until classes start again so I can print it out on campus in the labs :)

Æniad
January 18th, 2008, 04:15 AM
i know i was surrprised too but i love those books, its really well explained and good for people with no expierence ((i have alot of c++ and im in javascript2 class but im still no where near experiienced so its nice))

Very cool site, just downloaded the one about python. Thanks for the link.

:guitar:

jacksaff
January 18th, 2008, 04:17 AM
Ruby is very easy to learn.
Another good option might be php. You can tinker with web pages while learning a language with syntax very similar to c. You can do a lot of useful and fun stuff very quickly that way and php is a complete enough language that none of the effort learning it will be wasted if you then move on to c, c++, java etc.

p_quarles
January 18th, 2008, 04:18 AM
So I see its either C or Python. Are either of them OS specific? Or what OS's will the programs I write run on? I normally use XP during the semester but I play around with Linux on breaks. What other advantages does each language have?

I like the greenteapress books, but I can't stand reading off of the computer screen. I'll just have to wait until classes start again so I can print it out on campus in the labs :)
No, they're both cross-platform. Most Linux distros are shipped with Python interpreters, but I believe you'll have to install one yourself in Windows.

Chipter
January 18th, 2008, 05:13 AM
Start with C.
Sure it can be difficult to start out, but if you master C, you have the best stepping stone to move on up to other languages.

mips
January 18th, 2008, 12:33 PM
Assembly language ;)

dburnett77
January 18th, 2008, 02:06 PM
Depends on what type programs you want to develop.

Most utilities and smaller programs are best handled with C/C++ and can be extended into larger ones.

The nature of JAVA tends to be more relevant for cross-platform development of larger apps.

I'm tinkering with Python now, which is a good program for the simple/mundane on out to large-scale apps.

FORTRAN is not dead (learned some of that in college) and is the preferred language in NASA and several Defence Contractor's.

Check out:
http://www.programmers-corner.com/index.php

which has a lot of sample code that you can view, and determine which language(s) you may be interested in.
Most recommend being familiar with 2 or more languages, because a routine may be more suited in a certain language, which you can then link into your program.

If you want a quick jump into it, most I hear on Visual Basic is that you can whip out useful programs very quickly and efficiently.

bufsabre666
January 18th, 2008, 02:09 PM
Assembly language ;)

oh god no, i have to take that next smester or the one after and im not looking forward to it, im sure its not bad when you get the hang of it, but still it doesnt look fun

blackenedbloodx
January 18th, 2008, 02:10 PM
arguments: Java is my first. it is easy if u can pay attention as with anything

other Pre ap classes around the district were learning C++ but my teacher said it was too easy and that we were capable of learning Java

mips
January 18th, 2008, 02:34 PM
oh god no, i have to take that next smester or the one after and im not looking forward to it, im sure its not bad when you get the hang of it, but still it doesnt look fun

lol, it's actually a simple language and lots of fun. Probably the only language I can still program in seeing I started of at age 14 with 6502, then 680x0 followed by 8080, 8502, pic.

Pobably not the best language to write desktop apps in but it teaches you a lot about how the guts of a computer works. Very good for industrial & control applications where you need small tight code.

But in all honesty I would have to go with C just because it teaches you so much and you can use what you learned in other languages.

brunovecchi
January 18th, 2008, 04:03 PM
How about Perl? Perl is fun, I like Perl.

jacksaff
January 22nd, 2008, 04:11 AM
Lolcode!!!

Lostincyberspace
January 22nd, 2008, 04:20 AM
Assembly language ;)
well since that is out I am going to recommend machine code. Very hard to learn but totally customize able. 100% cross plat form too.

fedex1993
January 22nd, 2008, 04:21 AM
umm well wha ti am currently doing is learning python and C. I say C is one of the most important programming languages to learn right now

johndc
January 22nd, 2008, 04:30 AM
lol, it's actually a simple language and lots of fun. Probably the only language I can still program in seeing I started of at age 14 with 6502, then 680x0 followed by 8080, 8502, pic.

Mips, my friend, you have brought a sentimental tear to my eye.

I too can remember converting my 65C02 assembly code into hex opcodes, and entering them one-at-a-time in the Apple II monitor program. And there was no "save" option. You just wrote a block of memory to the disk (or tape!) and prayed nobody turned on any appliances (lest the EMF noise ruin your transfer).

raul_
January 22nd, 2008, 04:31 AM
I think that if you handle C and Java, you can handle anything they throw at you.

I started with Scheme and then C

raul_
January 22nd, 2008, 04:35 AM
arguments: Java is my first. it is easy if u can pay attention as with anything

other Pre ap classes around the district were learning C++ but my teacher said it was too easy and that we were capable of learning Java

He said C++ was too easy? err...

Well, personally, I put it this way:

-In Java, you can do anything you can, it gives you a helmet, a bullet-proof vest. It's a bit uncomfortable at first, but you're safe

-In C++ you can do pretty much anything you want, he lets you, he doesn't say anything,but if you shoot your foot, you blow up both your legs

johndc
January 22nd, 2008, 04:37 AM
He said C++ was too easy? err...

Well, personally, I put it this way:

-In Java, you can do anything you can, it gives you a helmet, a bullet-proof vest. It's a bit uncomfortable at first, but you're safe

-In C++ you can do pretty much anything you want, he lets you, he doesn't say anything,but if you shoot your foot, you blow up both your legs

-In Assembly, you get a pair of goggles and a thermonuclear device. One mistake and mankind is doom.... well... don't make any mistakes.

xxpor
January 22nd, 2008, 04:49 AM
brain****

http://en.wikipedia.org/wiki/Brain****
yea

Methuselah
January 22nd, 2008, 06:42 AM
Python is a good first choice.
Clean, with many libraries to do useful tasks.

mips
January 22nd, 2008, 09:19 AM
Mips, my friend, you have brought a sentimental tear to my eye.

I too can remember converting my 65C02 assembly code into hex opcodes, and entering them one-at-a-time in the Apple II monitor program.

What a coinsidence, it was a Apple II clone for me ;)

popch
January 22nd, 2008, 11:54 AM
What a coinsidence, it was a Apple II clone for me ;)

Been there, done that. Have you ever tried the virtual 16-bit processor which the Apple ][ emulated? Name of sweet16, if I recall that correctly.

Ebuntor
January 22nd, 2008, 01:05 PM
Assembly language ;)

That's not funny. ;) I had to learn a bit assembly for an exam. To say it was a nightmare would be an understatement. I was ready to smash my head through the monitor. ;)

I was happy to start learning Java after that, way easier. :p

PartisanEntity
January 22nd, 2008, 01:26 PM
I am currently working on teaching myself Python, I'm quite proud of this short script I wrote that does nothing more than save what I enter into a text file :)

Darkhack
January 22nd, 2008, 03:49 PM
I would recommend C as a first language simply because pointers are extremely powerful and learning to do proper memory management is very important. I think it's easier to start out learning how to program this way rather than being spoiled with garbage collection and bounds checking. Another reason is because it lets you appreciate those features so much more than if you were to simply learn them first and then go to C. You get discouraged when you don't have such features available and it takes a lot longer to learn C or another language because you are stuck in a different mind of thinking where pointers don't exist.

Don't let people scare you away from C. It's not a hard language. I don't have solid statistics on this (so I'm making them up instead), but I'd bet that C has more libraries than any other language. There is lots of abstraction. There are just two things to keep in mind with C. The first is that the built in libc functions are a security mess and shouldn't be used in the real world (it's okay for little demo apps though) and the second is that 99% of the the time when you "shoot yourself in the foot" it's because of a segmentation fault which is easily fixed and a debugger can help you.

"But C isn't object oriented!" Whenever you hear this quote, run. Run away and don't ever stop or look back. I think that OOP for a beginner is a rather stupid idea. Usually when people start off learning OOP any resources they use encourage them to abuse it like crack. Procedural programming is much simpler and easier to learn/use while OOP is designed for larger programs. There is nothing wrong with using it in small doses like creating a simple class, but avoid advanced concepts, like inheritance, for example. C++ in particular does OOP so badly to the point where programming with it is like slitting your wrists and then soaking them in hot grease. It's like trying to juggle with sand in your eyes. Yeah, I hate C++ as you can tell.

Another thing. OOP is so much more than just what features the language give you. OOP is a concept more than a language feature. One reason I like C is because I can do OOP with GObjects and do so while maintaining C's sane syntax. C++ is like syntactical vomit which can only be made worse by using Hungarian notation. If you've ever seen those "You Suck at Photoshop" tutorials on YouTube (hilarious!), I've often thought about doing one of those for C++ because it would be so easy.

In short, I recommend C, but if you choose to go a different route, make sure it's anything but C++ because it will eat your children and perform acts of perversion on you in your sleep and you'll wake up with herpes because you tried to do multiple inheritance the day before. Afterall, what do you think "using namespace std;" means?

popch
January 22nd, 2008, 04:47 PM
I happen to think that Darkhack's advice is not the best for beginners.

Pointers and garbage collection are things you can learn when you have a good grasp of the basics of computer programming. Until then, they are just distractions.

OOP (object oriented programming) is a very powerful way to organize your program. Contrary to what some people tell you, OO programming is procedural. Using OO early and often is a good way to start learning how programs could and should be structured.

If you just want to learn a computer (programming) language, Smalltalk would be fun. Squeak is a portable and open implementation. If it's to be useful as well, Python is a good choice. Do not attempt C++ unless you have very strong reasons to do so.