PDA

View Full Version : How did you learn to program



Pages : [1] 2 3

joedaman
December 20th, 2004, 10:25 AM
I use windows (my copy of ubuntu is on its way) and i have NEVER tryed programing before.

Can you give me some basic tips?????](*,)

az
December 20th, 2004, 02:14 PM
What do you want to do?

Quest-Master
December 20th, 2004, 05:14 PM
Python is probably the best language to start off with. It gives you a fabulous foundation to start off with and teaches you good habits as well.

EdCrypt
December 20th, 2004, 05:41 PM
Python is probably the best language to start off with. It gives you a fabulous foundation to start off with and teaches you good habits as well.

Learning to Program (http://www.freenetpages.co.uk/hp/alan.gauld/)
Beginners Guide (http://www.python.org/moin/BeginnersGuide)

joedaman, Welcome and Good Luck! :-D

Quest-Master
December 20th, 2004, 05:44 PM
Also, Dive Into Python is a nice read as well. It comes installed with Ubuntu, or you can view it online at http://www.diveintopython.org/.

ubuntu_demon
December 20th, 2004, 05:49 PM
I use windows (my copy of ubuntu is on its way) and i have NEVER tryed programing before.

Can you give me some basic tips?????](*,)
In my opinion there are three ways. Depending on your attitude and goals choose the one that fits you.

#1 start bottom-up as close to the machine as you can and then move up to higher languages. (eg start with assembly or C and end up with java,c#,php,perl,python)
(If you are willing to spend a lot of time on learning to program)

#2 start with python and only go closer to the machine when you need more power or want a challenge.

#3 If you are thinking about a specific task (like programming the backend for a website). Try to find the programming language that best fits your needs.

some hints on programming languages (subjective):

matlab is nice for mathematical / technical computing. It's great when you need to quickly implement and try out some algorithm that uses a lot of matrices.

C / C++ : use this to program kernel,drivers,3d engines,stuff that needs max power and is worth the extra programming time

perl : parsing

php : (web)serversided programming

java : platform independent

c# : safer than C,most likely somewhat faster than java, your programs run in windows and linux(with mono)

python : I've read about it gonna try soon. It seems nice for almost everything else. especially : glueing applications together and quickly generating graphical applications / frontends.

az
December 20th, 2004, 06:21 PM
Python is a mitre saw.

Java is a bench saw.

C is a screwdriver.

C++ is a Phillips-head screwdriver.

C# is a screwdriver that has a funny head.

perl is a hammer.

What do you want to build? You cannot argue what tool is the best without knowing what you want to do!

EdCrypt
December 20th, 2004, 08:07 PM
He already said what he wants: learn how to program! :)
I think python is a great learning tool. If you think it is not enough (I still don't think so) you can learn anything else.
Just don't belive in any language slogan!

az
December 20th, 2004, 10:59 PM
I wanna program.

That could mean games or internet utilities or system utilities or anything! You would not use php for games, nor would you use C to make dynamic websites.

_What_ do you want to program?

If this person is thinking about a career in in software engineering, maybe python wold not be as good a choice as C. If this person wants to learn linux and feel comfortable in Unix systems, perhaps just learning bash scripting would be ideal.

Maybe web site design is what turns this persons crank; perl php even java!

You can't just say that one tool is the best. Just like you can't say that a hammer is better than a tape measure.



(Now don't go telling me that python is a swiss army knife.... That would not be accurate!)

Lovechild
December 21st, 2004, 01:54 PM
I was taught C++ and x86 asm in college, later I started learning C# which I enjoy quite a bit.

I would go with C# for a first language, there are good books for it around, even ones based on Mono.

Of course I'm biased.

muzver
December 24th, 2004, 08:15 AM
imho This book (http://savannah.nongnu.org/download/pgubook/ProgrammingGroundUp-1-0-booksize.pdf) is the first book the newbie should read.

wtd
December 29th, 2004, 06:15 AM
I started out with HTML and Javascript. Yes, yes, laugh all you want, but at least the Javascript part of that is actually programming.

At the prompting of a friend I learned Perl so he'd have someone to talk to about such things. He then took up Python, and so I followed along since he showed me code and I started to like it. I first started to understand object orientation here.

Somewhere in this mix I played with C and C++, but didn't really understand either nearly as well as I should have.

When I got access to a Mac with OS X I finally had a decent Obj-C compiler at my disposal, so I picked up that a bit.

I tried to learn Haskell but got confused and dropped it.

I heard about Ruby and gave it a whirl, then found myself really liking it. This is where I got a better grasp of OO concepts, and I started to actually like object orientation.

Researching Ruby I heard talk of Eiffel and checked that out. I rather like it, actually. I looked into Sather but could never find decent tools. Shame, since it looked interesting.

I've worked with Java and consider myself decently proficient, though I keep the API reference bookmarked.

I dabbled in Pike, but never did much with it.

I've played with C# a bit. It's not bad, but I find the naming conventions obnoxious.

I looked into O'Caml, and started to grok the functional paradigm. I credit much of this to psuedo-functional aspects of Ruby.

I've gotten a lot better at most of the aforementioned languages.

I've recently been seduced by Haskell, and this time I'm not horribly intimidated, though I admit not understanding monads very well.

zeroK
December 29th, 2004, 03:47 PM
I started with Java and then moved into both directions (up and down).
Down: C, C++, MIPS ASM
Up: Perl, Python, PHP, Ruby

IMO Java is a good starting point simply because it introduces you to the world of C (because of the syntax) and object oriented programming without giving you the hassle of C++.

rbran100
December 29th, 2004, 07:42 PM
Before i spend time formulating a reply to that, tell me a little about what you want to do. Most people don't wake up and say, "i want to program now". Most that is. So what is your intended goal? that will determine your starting place.

rbran100
December 29th, 2004, 07:47 PM
I started with Java because that is what i was exposed to first.
Then i moved to Perl and Python because that is what RedHat wanted me to use.
I then played with C C++ and nesC, C and C++ because everyone needs to learn C and C++ and then nesC because i was programing tiny little sensors.
Then decided to learn assembly for some unknown reason, programming with that was like pushing a bolder.
Learned php next (lol not much learnig involved there)
Looped back arround to Java again :-) Think i missed a few languages in there...sure of it.

jdodson
December 29th, 2004, 08:07 PM
the only languages one needs:

python - writing a 2d rpg in this one, i have many scripts in python

SQL - i wrote LOTS of databases for my webpages in SQL, some of my scripts store data in SQL.

c - hack some code for an open source project, twclone in this language

php - my whole webpage is in this one. i have programmed other pages in this language.

..... actually rephrase that... the only laguages i use:)

wtd
December 29th, 2004, 09:41 PM
the only languages one needs:

Perhaps, but you'll be a better programmer for knowing more, and more diverse languages. For instance, consider learning a functional language, or a purely prototype-based object-oriented language.

jdodson
December 30th, 2004, 01:29 AM
Perhaps, but you'll be a better programmer for knowing more, and more diverse languages. For instance, consider learning a functional language, or a purely prototype-based object-oriented language.

i started my programming history using basic. not sure how much more functional you can get.

i would rather be good at those languages that i listed than know a million languages and not be good at any i don't tie myself to any language in particular, if one comes along that is better than another i can replace the lacking language. i know "how" to program i don't just learn a language. becoming a better programmer has nothing to do with learning a quadrillion languages, i think it has to do with elegance, tight code and the ability to not reinvent the wheel and a good design(there are many others, those just came to mind). i listed those languages because those are what i personally use, i also have programmed and am faily proficent in the following languages, i just dont personally use them:

c++
swi-prolog
perl
java and javascript
basic
eiffel(sp?)

i dont have tons of time to learn programming languages, though c#/mono does peak my interest. i think sometime i will start hacking on c#.

zeroK
December 30th, 2004, 01:53 AM
c++
swi-prolog
perl
java and javascript
basic
eiffel(sp?)


prolog *runs* *hides* ahh
:-)
Sure, it has its use but I'm really happy everytime I can avoid it :)

jdodson
December 30th, 2004, 06:07 AM
prolog *runs* *hides* ahh
:-)
Sure, it has its use but I'm really happy everytime I can avoid it :)


ya, i do not use it for a reason:) prologs motto should be, "prolog: making easy things tough." then again its pretty good for AI...

panickedthumb
December 30th, 2004, 06:22 AM
Start out on C/C++. That provides a great framework for learning other languages, and it translates pretty well to PHP if you want to do websites. This is all from memory, because though I know PHP rather well, I haven't written anything that needed compiling in a few years and I've forgotten most of it. I was an ADA guru though (that's the intro language at Radford U's CPSC program, or used to be anyway, now it's Java). ADA will get you NOWHERE unless you plan on working for the US Government coding radar systems for battleships.

Like Azz said though, it all depends on what you want to do. I never had any formal training in C/C++ or PHP (because I dropped the CS major), I basically wanted to do stuff and found out how. The best advice I can give you (if you're determined) is to go in head first and figure it out.

wtd
December 30th, 2004, 07:45 AM
i started my programming history using basic. not sure how much more functional you can get.

i would rather be good at those languages that i listed than know a million languages and not be good at any i don't tie myself to any language in particular, if one comes along that is better than another i can replace the lacking language. i know "how" to program i don't just learn a language. becoming a better programmer has nothing to do with learning a quadrillion languages, i think it has to do with elegance, tight code and the ability to not reinvent the wheel and a good design(there are many others, those just came to mind). i listed those languages because those are what i personally use, i also have programmed and am faily proficent in the following languages, i just dont personally use them:

c++
swi-prolog
perl
java and javascript
basic
eiffel(sp?)

i dont have tons of time to learn programming languages, though c#/mono does peak my interest. i think sometime i will start hacking on c#.

I think a good guideline is to set the goal of learning one new language a year. :)

elwis
December 30th, 2004, 07:04 PM
I think a good guideline is to set the goal of learning one new language a year. :)
One new language each year, wasn't that Eric S Raymond who said that!

Ouch, wish I had the time..

wtd
December 30th, 2004, 08:18 PM
One new language each year, wasn't that Eric S Raymond who said that!

Ouch, wish I had the time..

I got it from the Pragmatic Programmers.

Quest-Master
December 30th, 2004, 10:04 PM
I agree with panickedthumb. Even if you won't use it, C++ is the most useful (and most frustrating and difficult) place to start off with programming. Most people give up progging all together because of the difficulty level.

Knowing C++ passes on into just about every other language: PHP, Java, Python, Ruby, Pascal, whatever.

Truly now though, I think Python is the best way for a new programmer to start. It teaches you everything other languages use, a down-to-earth approach on syntax, and not loaded with crap that C++ has which is pretty useless for beginners. (pointers and such)

DoubleDangerClub
December 30th, 2004, 11:45 PM
I bought a book on HTML the first day I got the internet and then moved to Javascript, then VB, then Java, then C++.

If you can get a hold on the loops and if/else statements and logic, you'll be good to go in about anything. Then you have to learn Object-Oriented concepts such as abstraction and inheritence.

Good luck. I started on my own and now develop for a software company.
Books and Internet == good stuff. ;)

lordan
December 31st, 2004, 12:08 AM
Really, I think you can start just about anywhere. To a certain extent, azz is right that you should choose a language based on what you want to program. But it's not all that important either, because once you grasp the whole concept of programming, it's not all that difficult to apply that to other languages.

I personally started off in assembly language and BASIC on a VIC=20. Didn't really do much else until I started programming Pascal and C in high school. Did a bit of C on my Amiga as well, but it was to darn slow, so I mostly stuck to asm.

All in all, if I were to recommend a language, it would probably be C. Or, if you feel like a challenge, malbolge.

EzraBrowser
December 31st, 2004, 02:24 AM
It was easier in my day. In my first week of an engineering degree I was given an intensive course in FORTRAN IV (don't laugh). It was a black and white video shot in about 1966. I used that and Fortran 77 over the next four years of the course.

Engineering was in a recession at the time of my graduation so I became a programmer in the commercial world. It has the advantage of paying more towards the bills. At the start of my commercial career 20 years ago, the first two weeks training were in a structured design method. That was before four weeks of COBOL. It was one of the best training courses I have had. I am sure that everyone has their favourite language for a particular task, but don't get hung up on that. All you need to start with is to understand three simple concepts: sequence, selection, and iteration.

Sequence: do A, then do B, then do C.

Selection:
if Condition 1 is true then do A
else if Condition 2 is true then do B
otherwise do C

Iteration:
while/until Condition 1 is true do A

All languages provide constructs to code these; it's just that some make life more easy than others in certain situations. Do what everyone else does, and copy what you consider to be a good solution to a similar problem.

Ozitraveller
December 31st, 2004, 02:53 AM
Yes I did Fortran IV too as well as Cobol, PL/1. But I think the first code I wrote was assembler and some low level machine code (YUK!, and how I hated it too), and Basic on Dec PDP11/40.

wtd
December 31st, 2004, 10:24 AM
Truly now though, I think Python is the best way for a new programmer to start. It teaches you everything other languages use, a down-to-earth approach on syntax, and not loaded with crap that C++ has which is pretty useless for beginners. (pointers and such)

I thought so when I first learned Python too. Now, though I would say Ruby seems a better fit. Python does a decent job, but it's OO is just too "tacked on". Understanding things like public, private, and protected is important, as is knowing how to deal with encapsulation, which Python just doesn't emphasize, what with everything being public by default.

Python's a good one to have under your belt, certainly, and in a world without Ruby it'd be the ideal beginner language, but with Ruby kicking around...

clsdaniel
December 31st, 2004, 05:25 PM
Well, basically, i started programing in VB on windows, yes gentlemen, i started on windows like most people. But then i reached the limits of the languaje in terms of performance, then i tried to code some C to enhance my VB code and struggled a bit with the languaje, bit didn't learned it well, then i learned i could embed assembler on my C dlls, then i learned x86 assembly, which was pretty simple and easy to use, along with some mmx and sse extensions that comes really handy.

Then it happened, my windows died and couldn't repair it, and installed a copy of Red Hat i had (v5.2), this was the first time i used linux, it was really difficult, but i learned right away basic usage, and started to learn C more seriously, after all i was stuck with it :)

Then i learned C++, maked some jobs on PHP, messed with python, tried and loved Objective-C, hated resource hungry Java ;), ok, ok, my machine was somewhat low end at the time, what do you expect from an old laptop? ;)

Probably, is best to learn C/C++, many languajes are sintaxically (sp?) modeled after it, like PHP, Java, etc. You will break your head against the wall at first, but it will be worth once you undertand well the languaje.

Also many Open Source projects are written on C or C++, there is a lot from where to take examples or to practice.

Cheers, and good luck.

Ozitraveller
January 1st, 2005, 12:56 AM
Cobol
Fortran
PL/1
Basic (not MS)
Assembler
C (SCO Unix)
C++ (only beginner)
C#
ASP.Net
Rexx
Clist
JCL
VB6/VBA (Word/msaccess/excel)
SQL (MS/Oracle/MSAccess/DB2/Ingres)
ORACLE (SQL*Plus, PL/SQL, SQL*Forms, SQL*Menu, SQL*ReportWriter, Pro*C, DBA)
Paradox
Focus (Hierarchical DB)
ISPF
Pascal

Yet to learn:
MySQL, Apache and maybe Python/Ruby or go back to C++.

I wouldn't mind trying to convert Gramps from python to C# just as an exercise!

Quest-Master
January 1st, 2005, 01:29 AM
Ruby seems to be catching some speed lately, but it looked really ugly from the way it's syntax last I looked at it. Might've progressed, but from where I come from (game development community), Ruby is something everyone shys away from.

Ozitraveller
January 1st, 2005, 02:36 AM
I think MySql is my first port of call.

So I'm looking for a tutorial, if anyone has seen one?

The MySql site a lot of good stuff, but I'm looking for a simple example and preferably running on windows for a start anyway.

jdodson
January 1st, 2005, 04:29 AM
Ruby seems to be catching some speed lately, but it looked really ugly from the way it's syntax last I looked at it. Might've progressed, but from where I come from (game development community), Ruby is something everyone shys away from.

i just looked at the ruby site and i have to say the language looks pretty cool. its a wierd combo of python/perl and java oop, however it seems to take some interesting bits from both. it seems to have more in common with python however ruby is a full oop language. it implements somethings from perl i dislike such as the $_ variable though.

btw the syntax did not look that bad to me at all, it was rather cool it its own way. after looking over it, i am not adverse to doing any work in it. i might actually look at it you write a few scripts in the future....... though full oop for a quick script might be overkill, thats why i dig python:)

Quest-Master
January 1st, 2005, 04:48 AM
Interesting.

It also has a Ruby-SDL and Ruby-GTK+ package. :)

wtd
January 1st, 2005, 07:07 PM
though full oop for a quick script might be overkill, thats why i dig python:)

You can program without too much concern for object-oriented programming in Ruby as well. You see, when you think you're defining methods (the "def" keyword) outside of a class, you're really defining them in the Object class. Since every class inherits from Object, they all get those methods.


def foo
"foo"
end

class Bar
def baz
puts foo
end
end

b = Bar.new
b.baz

It looks in this example like the baz method is calling a method which lives outside the Bar class. In reality, Bar has inherited Object, and thus gained access to foo. We can use foo either as though it's simply a method defined in another scope, or more powerfully as a method of the Bar class. The illusion is perfect for those who don't care about OOP (yet), but can easily be ignored by advanced programmers.

We can show this by using "private".


def foo
"foo"
end

private :foo

class Bar
def baz
puts foo
end
end

b = Bar.new
b.baz

Now this generates an error. Private methods are not inherited, so foo is not inherited by Bar, and thus the baz method cannot call it.

Now, for those who like to do system administration work, Ruby holds an ace up its sleeve. Iterators. Consider the typical file handling procedure:


Open file
Do some basic tedious prep work
Handle file
Tedious clean up work
Close file

Step number 3 is really the only one we generally concern ourselves with on a regular basis. So, we can create a method which helps with that.


def handle_file(file_name)
f = File.open(file_name)
# prep
yield f
# clean up
f.close
end

And in use:


handle_file("foo.txt") { |fh|
# step three
}

millman
January 8th, 2005, 08:39 PM
How did I learn to program ? - Many years ago using a long forgotten dialect of Basic. I'd recommend C, C++ and Python today.

stateq2
January 9th, 2005, 12:55 AM
Also, Dive Into Python is a nice read as well. It comes installed with Ubuntu, or you can view it online at http://www.diveintopython.org/.

where is it installed?

#Greg
January 9th, 2005, 08:56 AM
First of all: Hey, you can use PHP for games!

Everyone is going to say something different about what to learn first.
I'd say Python just because it's cross-platform, has loads of support, it's easy to learn, it can do a huge amount of different tasks, it's free, and it'll teach you good coding practice.

Whatever you do, please don't choose VB :D

Quest-Master
January 9th, 2005, 07:48 PM
First of all: Hey, you can use PHP for games!

Everyone is going to say something different about what to learn first.
I'd say Python just because it's cross-platform, has loads of support, it's easy to learn, it can do a huge amount of different tasks, it's free, and it'll teach you good coding practice.

Whatever you do, please don't choose VB :D

PHP-GTK? It looks really awesome, and I'm most fluent in PHP, so I'm wondering if it possible to really do so..

stateg2: It is supposed to be installed with Ubuntu, but I can't find it. :\

#Greg
January 9th, 2005, 07:53 PM
Yea, you could use PHP-GTK, but I didn't. I created web-based games.

bungley
January 11th, 2005, 10:46 PM
i started my programming history using basic. not sure how much more functional you can get.

Was that a joke?



Becoming a better programmer has nothing to do with learning a quadrillion languages, i think it has to do with elegance, tight code and the ability to not reinvent the wheel and a good design(there are many others, those just came to mind).

That's rubbish. :) There are always reasons to learn new languages.

First, and most importantly, "A language that doesn't affect the way you think about programming is not worth knowing. ". Need I elaborate?

Also, times change. It's naive to assume the languages in use today will be the same as those in a few years.

There are many others, but those just came to mind. :P

az
January 11th, 2005, 11:20 PM
"where is it installed?"

/usr/share/doc


dpkg -L diveintopython

Johan
January 11th, 2005, 11:31 PM
Was that a joke?


That's rubbish. :) There are always reasons to learn new languages.

First, and most importantly, "A language that doesn't affect the way you think about programming is not worth knowing. ". Need I elaborate?

Also, times change. It's naive to assume the languages in use today will be the same as those in a few years.

There are many others, but those just came to mind. :P

Well learning a new language does most of the time make you learn more about programming in genereal but on the other hand it is quite possible to mistreat almost any language... :-)

jaybee99
January 12th, 2005, 12:01 AM
IMO the best way to get into programming if you're going to be self-taught and it's a hobby rather than your living is to start top-down - to have projects that really interest you and complete them one at a time, one problem at a time. Don't be in a rush and don't be put off by language wars or the macho displays of assembler-love you will come across in threads like this :D So if you're interested in developing applications, think 'what kind of applications?' - if you love KDE, learn c++ from the basics, then look at the IDEs and tools around to make your life easier. If you're interested in scripts that automate things/plumb things together for you on your home box look at perl and shell scripting. If websites, learn javascript, css & php. Some people may tell you the last option hardly qualifies as 'programming' or that you need to start lower-level but ignore them. If you get a kick out of it you'll keep doing it and it will lead you in different directions.

Like the man says, Happy hacking!

shaine
January 13th, 2005, 08:08 PM
I learned from looking at other code, and modifying it, and such.
I personally can't learn from books easily.. hate it.

Well.. lets see.
i love perl, use it daily. (lol perl is older then me)
i can code php easily, dont like it.
php was based heavily on perl i think
php was even originaly written in perl.
i tried ruby a lil, but not enough to make a judgement
i tried python, cant stand it.
i learned some C++ on my own.. i suck at it.
i took a 1 year c++ class.. learned nothing from it.
i remember one night i tried like 20 differnt languages out, messed around.
but i remember almost nothing about any of the languages.
i HIGHLY suggest perl.. for web apps, server admin, whatever.

jaybee99
January 13th, 2005, 08:34 PM
php was even originaly written in perl.

it was/is written in C, I think.

shaine
January 13th, 2005, 09:00 PM
it was/is written in C, I think.
it is now, but originaly it was smaller and written in perl.

jaybee99
January 13th, 2005, 09:14 PM
it is now, but originaly it was smaller and written in perl.
I don't want to be pedantic, but why would you use one high level language to write another? Google turns up this (http://www.oracle.com/technology/pub/articles/php_experts/rasmus_php.html) (" The initial unreleased version of PHP was mostly a C library of common C functions I had written to be easily reusable from one open source project to the next.") and this (http://en.wikipedia.org/wiki/Php#History)

edit: by which I mean one high level language to write another at exactly the same level of abstraction - on the other hand it makes perfect sense to use perl/php to write a higher level scripting language

shaine
January 13th, 2005, 09:21 PM
I don't want to be pedantic, but why would you use one high level language to write another? Google turns up this (http://www.oracle.com/technology/pub/articles/php_experts/rasmus_php.html) (" The initial unreleased version of PHP was mostly a C library of common C functions I had written to be easily reusable from one open source project to the next.") and this (http://en.wikipedia.org/wiki/Php#History)
on one of those links... "PHP was originally designed as a small set of Perl scripts".
But i guess actually PHP/FI was perl, and PHP came later as a replacement.. written in C.
I don't think PHP was meant to be as big and thats why it was written in perl.
i've written very small scripting-like language-like things in perl for fun before... and found them quite handy at times.

Quest-Master
January 13th, 2005, 10:58 PM
On the contrary, I despise Perl and use it for nothing, while love Python and PHP incredibly. :)

jaybee99
January 14th, 2005, 12:38 AM
on one of those links... "PHP was originally designed as a small set of Perl scripts".
But i guess actually PHP/FI was perl, and PHP came later as a replacement.. written in C.
I don't think PHP was meant to be as big and thats why it was written in perl.
i've written very small scripting-like language-like things in perl for fun before... and found them quite handy at times.
I stand corrected :)

dataw0lf
January 14th, 2005, 12:42 AM
Long live Python and PHP, down with Perl! ;) I used to do alot of Perl scripting, but, as
even Larry Wall as stated before, there's way too many ways to program something in Perl. While this can be a good thing sometimes, it generally leads to unreadable code and sloppy programming.
dataw0lf

shaine
January 14th, 2005, 12:44 AM
On the contrary, I despise Perl and use it for nothing, while love Python and PHP incredibly. :)
Everyone has their own prefrences.
I *TRIED* python. I *HATED* python.
however i know plenty who *LOVE* python.
and i know plenty others who *HATE* python and *LOVE* perl.
I could never live without perl... it makes my life so much easier.

Buffalo Soldier
January 14th, 2005, 01:54 PM
Been an Ubuntu user for 4 months. Totally new to programming. Started learning Python yesterday. So far I like it (meaning I have not pulled out any hairs yet). I will post about my progress and how much I like/dislike Python again in a week or so.

Error1312
January 18th, 2005, 08:27 PM
Originally started with Visual Basic 6.0. Then moved over to C, C++ and a few months ago I was using C# (pretty good language). But now, because I'm using Linux more and more I wanted a language which was fairly easy and both powerful and which could run on multiple platforms, so I'm learning Java at the moment.

jerome bettis
January 18th, 2005, 11:23 PM
i started with Qbasic just to get familiar with the fundamentals (loops, procedures, etc)

then i moved on to pascal, which was a natural transition. this was great because it introduced the basics of objects and put more empahsis on all the stuff i picked up from basic.

from pascal i went to C++, which i thought was a little too much at once. if i could do it all over again, i would have learned C before C++. i spent several years in C++ and it was very valueable, because as others have said, it makes learning other languages much easier. however, i would not recommend it for a first language, because it can be a pain in the ass for a newbie to figure out.

then i switched to java. say what you will, i friggin love java. i see other's programs that have 2 or 3 huge files, while mine does the same thing better in 10 or 12 small files. abstraction is great, especially when you learn how to design your programs properly before you start typing. doing this with java is very easy (no header files etc), it's designed for this. once i layout my entire design on paper, the program pretty much writes it self. i didn't have this sort of experience with C++ for some reason, i guess it's because creating objects is a little more of a hassle.

and the best part, java doesn't have tedious pointer syntax.

or maybe the real best part, all of the standard libraries that you can build on.

then i went back and finally learned C. after being used to all the nice things in java, i hated it. after sorting out all kinds of segmentation faults and relearning the concept of pointers, i think i am pretty comfortable with it.

somewhere in between there, i learned MIPS, which was well worth it. it's fun to program at such a low level sometimes, because when you go back to the high level, you'll appreciate it much more. it also teaches you to slow down and do things one step at a time.

python will probably be next.

martyr
January 25th, 2005, 08:49 PM
The first step I made towards "programming" was learning HTML at the age of eleven.
I think I was twelve when I started true programming with C/C++ which is still my favourite language. About two years later, I began discovering PHP. I like this one a lot too - pretty common for a passionate C++ programmer.

I also played around with a few other languages, but none was able to arouse my interest enough to get me away from C++.

Furthermore, I am currently learning Delphi/Pascal in my advanced IT course at school. It's okay to play around with it, but I don't see any reasonable advantages of (Object) Pascal over C++, especially in a Linux environment.

I contemplate learning Python, because it might be more appropriate for non performance-dependant jobs.

JeffS
January 27th, 2005, 01:54 PM
Python is a mitre saw.

Java is a bench saw.

C is a screwdriver.

C++ is a Phillips-head screwdriver.

C# is a screwdriver that has a funny head.

perl is a hammer.

What do you want to build? You cannot argue what tool is the best without knowing what you want to do!

Nice analogies. And you are making an important point. The various languages are all different tools in a programmers tool box. And each tool is good for a particular task or tasks.

JeffS
January 27th, 2005, 02:10 PM
i just looked at the ruby site and i have to say the language looks pretty cool. its a wierd combo of python/perl and java oop, however it seems to take some interesting bits from both. it seems to have more in common with python however ruby is a full oop language. it implements somethings from perl i dislike such as the $_ variable though.

btw the syntax did not look that bad to me at all, it was rather cool it its own way. after looking over it, i am not adverse to doing any work in it. i might actually look at it you write a few scripts in the future....... though full oop for a quick script might be overkill, thats why i dig python:)

Full OOP only becomes useful in larger scale projects, particularily ones that have large teams that have to share and reuse code. Anything less than that and OOP tends to be overkill.

For smaller scale projects, OOP tends to only add complexity, unless one is using stuff like C++ templates and the STL.

OOP is just another tool in the programmer's toolbox, and a very useful technique in some situations. However, it is not a panecea - even Bjarne Stroustrup emphasizes this when he calls C++ a "multi-paradigm language".

JeffS
January 27th, 2005, 02:26 PM
After years being in sales and management, I decided I wanted to earn a living as a programmer/IT professional. This was around '97. At that point I heard a lot about the impending Y2K bug. A lot of that code was in Cobol, so I started out with that, figuring it would be a good foot in the door to the profession.

Then I leanred VB in a class, then C. I got my first programming job using mostly VB.

I learned HTML, JavaScript and ASP on the job, as I became the main web developer for my company. Then along the way I did a few projects in C/C++ and Java.

I've continued to hone my C and C++ skills. I took a class in C Data Structures, then a class in Windows programming with the Win32 API in C. These classes really propelled my understanding and proficiency with C.

And now that I've been a big Linux user for about 3 years now, I continue to delve into C, as Linux is built on C, even Gnome apps are C (with GTK+), and I continue to delve into C++ on the KDE side. I've also messed around with Perl and Python.

Finally, I did a project using PHP, using XOOPS for a message board. However, I ended up shelving that for the ASP oriented Snitz, as our website is hosted on Windows/Internet Information Server and ASP is a better fit there.

As for someone just learning programming - I would go for some easy, high level language, like Python or VB (if you have to use Windows). One has to learn the very basic concepts of programming first, such as variables, control flow, conditionals, loops, algorithms, etc. One has to learn to walk before one can leanr to run. But then I would highly recommend learning C and/or C++ after getting the basics. These languages really teach you programming, and how a computer works.

Jad
January 27th, 2005, 04:46 PM
Learning programming is learning logic & code design, more than learning syntax.

wtd
January 27th, 2005, 09:24 PM
Learning programming is learning logic & code design, more than learning syntax.

This is why I believe learning many languages helps. Going back to the tools analogy, if I try every task with a regular screwdriver, then try every job with the Philips head screwdriver, I can see exactly where I really need one or the other, and where both will work.

jaybee99
January 29th, 2005, 11:49 AM
I think Paul Graham's assertion that all languages are evolving towards Lisp ( lots of essays on his site, eg http://www.paulgraham.com/iflisp.html) is very interesting - features that it has had for decades are periodically 'discovered' by newer languages, like garbage collection, but people are so hostile towards it cos the (lack of) syntax and ideas behind it's 're-programmability' are so alien to the C family of languages...I'm aiming to learn it to see if what the smug lisp weenies (http://c2.com/cgi/wiki/RandomPages?SmugLispWeenie) say is true

domzo
January 31st, 2005, 12:59 PM
I learnt BASIC on one of these when I was about six:
http://www.nvg.ntnu.no/sinclair/computers/zx80/zx80.htm

Since then I've used all sorts to varying degrees. Like others have said, it's the principles of programming that you have to learn, then it's easier to switch syntax.

I'm learning Python now :)

stateq2
January 31st, 2005, 07:53 PM
I learned from looking at other code, and modifying it, and such.
I personally can't learn from books easily.. hate it.
ditto, but i gained the majority of my knowledge looking at online documentation (often including code examples).

I started out, like everyone else, w/ html. soon after, while still using windows, i jumped straight into c w/ dev-c++....not having any idea what i was doing. after not getting very far w/ that(hellowolrd), i gave up.

that's when i started getting curious about linux. long story short, i found linux much easier to develop on. i then moved up in the ranks by using c++ to make tons of sensless console apps in that did nothing. after i was fairly comfortable w/ coding/compiling...i decided it was time for me to look into "libraries" 8-) to make my apps more advanced.....which is when I looked into SDL. after playing w/ SDL, and figuring out how to move images on the screen, I gave up again.

after awhile, i wanted to contribute something to the opensource community, as well as create something useful that i needed...which is when i created flac2ogg (http://freshmeat.net/projects/flac2ogg/). I figured perl was the best job for this....so i learned perl on the fly, while i was writing it. after a few re-writes, I realized that I didn't like perl....so rewrote the entire script in python....again, on the fly...learning python as i went.

this is when I fell in love w/ python....the code was so beatiful and organized. this is where I'm at right now....i'm currently writing vorbis player in python using glade, pygtk and pyogg. this forced me to learn much more about things like classes, threads, audio, etc. I should be making the first release w/in a few weeks 8-)

btw, i'm also currently a computer science major at my university, so i'm taking java as well....although i don't like it much

Campitor
February 14th, 2005, 01:50 AM
Learning programming is learning logic & code design, more than learning syntax.

I agree...I am a conservation biologist and have been using linux for over two years now. I now need to learn programming to build specific simulations...mostly math..no GUI, no fancy OOP (for now anyway :wink: ). I started to learn Python about six months ago, and started getting good at it...but once I left the books and the simple examples, and wanted to build complex simulations...I realized I still did not know how to program :| ...I needed to learn algorithms. The python syntax is so nice and simple that you are able to learn the basics within a couple of weeks...but knowing the syntax is quite irrelevant for a newbie...the logic and different techiniques of building complex algorithms, that's what n00bs need to learn.

I'm still looking for a good book (OR web page) on that. IMO, python is a very good learning language and for guys who are not going to make a living out of programming, but really needed to acomplish specific tasks-- a good book in pyton and a good book in algorithms would really help us all to learn.

P.S. I know MatLab is really good for scientific modeling, but I really want to learn something opensource...

jaybee99
February 14th, 2005, 11:53 AM
I agree...I am a conservation biologist and have been using linux for over two years now. I now need to learn programming to build specific simulations...mostly math..no GUI, no fancy OOP (for now anyway :wink: ). I started to learn Python about six months ago, and started getting good at it...but once I left the books and the simple examples, and wanted to build complex simulations...I realized I still did not know how to program :| ...I needed to learn algorithms. The python syntax is so nice and simple that you are able to learn the basics within a couple of weeks...but knowing the syntax is quite irrelevant for a newbie...the logic and different techiniques of building complex algorithms, that's what n00bs need to learn.

I'm still looking for a good book (OR web page) on that. IMO, python is a very good learning language and for guys who are not going to make a living out of programming, but really needed to acomplish specific tasks-- a good book in pyton and a good book in algorithms would really help us all to learn.

P.S. I know MatLab is really good for scientific modeling, but I really want to learn something opensource...

This book (http://www.amazon.com/exec/obidos/tg/detail/-/0262032937/qid=1108377271/sr=8-1/ref=pd_bbs_1/104-5759627-8829561?v=glance&s=books&n=507846) will tell you everything you need to know about algorithms. Part of the essence of programming is reuse - Don't Repeat Yourself, and equally importantly, don't repeat anyone else if you can help it. I would have thought there are python libraries available for all sorts of mathematical & scientific modelling. There certainly are for C/C++, Java etc. So use them, cos if you roll your own, apart from the wasted effort, you won't do as good a job (unless you're an expert programmer of course). If these libraries don't exist, switch from python.

DirtDawg
February 15th, 2005, 10:40 PM
I got an imac from a magazine I was working for after it tanked(the magazine, not the computer). I'd never had internet or my own computer before and I soon became fascinated with the computer and wanted to learn to manipulate it. First, I started learning a language called "tads" which wrote the types of games I remembered playing as a child. I lerned quite a bit through that, but being based on "C", the syntax is somewhat complex for a beginner. In the meantime, I begin to get curious about "real" programming.

At the time, I had no idea what "open source" was. When I attempted to find a "C" compiler (something i knew nothing about) for os9, I could only find ones that wanted me to pay the buck$. While searching, I went to some "free software for mac" download site and found Python for mac os9. I had no idea what it was or how it worked, but it was free so I downloaded it. I began to playing around building teeny tiny little programs that did rediculous trash (writing programs that insult my friends has always been a fav) and now, after all this time, I sometimes have an idea of what I'm doing!

Eventually, os9 crashed and burned and now my lil' imac has Ubuntu. BTW: Linux rawks the houze for programming. It's as if the entire os is built for it (which, maybe it is). Linux makes programming fun enough where I'll write scripts "just because".

toojays
February 16th, 2005, 05:40 AM
Many of the posts on this thread are not particularly helpful; quibbling about various language features, and not helping the original poster because he didn't say why he wanted to learn. I hope this doesn't put novices off reading as far as this post.

If you are just starting out learning programming for its own sake, I would recommend the following.

Start with An Introduction to Programming in Emacs Lisp (http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/index.html). This is a very gentle introduction to programming which is written for non-programmers. Although Emacs Lisp is a language with a very narrow focus, I still recommend this book because of how well it covers essential programming concepts such as functions, data structures and flow control. As a bonus, by the time you finish this book, you will know about Regular Expressions, and how to extend your text editor with your own personal customisations.

After you finish the emacs-lisp-intro, move on to learning Python. You will see that Python looks different to Emacs Lisp, but the basic concepts (flow control) etc, are the same. I haven't evaluated a Python textbook so I don't know what to suggest here. How to Think Like a Computer Scientist: Learning with Python (http://www.ibiblio.org/obp/thinkCSpy/) is supposed to be very good.

By the time you have finished the Emacs Lisp textbook and a Python textbook, you are probably in a position to figure out where to go next on your own. For future study I would recommend The Structure and Interpretation of Computer Programs (http://mitpress.mit.edu/sicp/) (SICP). This is a terribly under-appreciated textbook; in my mind it ranks alongside "The Art of Computer Programing" as one of the essential texts on programming. It has the virtue of being shorter and easier to follow than TAoCP. SICP will make you aware of many programming techniques which are rarely used (or even heard of!) by most programmers.

If you can get through all the above, picking up other languages and reading other people's code will not seem particularly difficult. More importantly, by this stage you will have the vocabulary and the confidence to discuss things you don't understand with other programmers.

iant
February 17th, 2005, 11:31 PM
before picking up any books or choosing a language, one of the best things i think you can do (if possible), is to find a "real live" programmer and ask them to sit with you for an hour or two and explain the basics (what a variable is, what an array is etc)
it will be a good foundation whatever language you choose.

things like arrays are so simple when you know how, but take a long time to get your head around when you're a beginner programmer sat working through a book (they did for me!). in fact, for my way of learning, i've never had found a book that can explain these concepts better than a programmer waving hands around and drawing things on bits of paper.

as for languages (when you get to that) i'd suggest C. it's a good basis for most over languages.

personally, i'm just starting to learn ruby and i'm quite taken with it. especially RubyOnRails (http://www.rubyonrails.org/) which is just so stunningly strait forward i'm reluctant to go back to using perl and php for CGI ever again :)

jaybee99
February 17th, 2005, 11:38 PM
personally, i'm just starting to learn ruby and i'm quite taken with it. especially RubyOnRails which is just so stunningly strait forward i'm reluctant to go back to using perl and php for CGI ever again :)
I'm just learning ruby too, it's really nice, isn't it :-) the idea of closures and yielding to blocks of code is very cool

psychic
March 3rd, 2005, 03:47 PM
I started out with Visual Basic 5 or six years ago... then i kinda did not do much with it until the summer of 2003 when i learned JAVA, since then i learned ProLog, python, ruby, ada, c, c++ (though that could definetely be improved), bash, PHP and SQL.

Based on my humble experience i would say that either ruby or python is a good choice, the first teaches you to comment / document and write readable code THE HARD WAY (because of the versatile syntax it is easy to mess up your code with unreadable combo's), the second one teaches you to write clean code one way, the python way, which is structured and clean.

shadesfox
March 7th, 2005, 06:07 PM
Relative forum newbie here, but I have a good 5 cents to say here. Personally, I started programming with BASIC for the Apple ][e. Then I went to the language on the TI 82 calculator and then the TI 86 after my 82 was stolen. After that was VB then C++. I give C professors head aches…

Anyways, what I would have done, with the chance to do it all again? Well, Ubuntu comes with a nice python tutorial. Nice language there. I’m also really fond of what I’m seeing of Ruby(http://www.rubycentral.com/book/). I’m just waiting for a project to do with it.

lordofkhemenu
March 7th, 2005, 07:40 PM
If programmers could write code in English, you would find that programmers can't write code.:p

Rogue Elephant
March 9th, 2005, 01:41 PM
I use windows (my copy of ubuntu is on its way) and i have NEVER tryed programing before.

Can you give me some basic tips?????](*,)
http://poignantguide.net/ruby/chapter-3.html

dewfis
March 10th, 2005, 01:52 AM
I really didn't read all the other replies, so someone might have said this already.

The general idea among UNIX programmers I have known is that most people learn how to program by reading other people's code. Its true, but of course it depends on how good the code is. Finding a programmer and asking them is also a good idea.

I would suggest starting with a good scripting language, since its easier to get things off the ground, and write a few toy programs to start. Then go to the books. Leave stuff like compiling, undefined/multiply defined symbols, etc. for later.

I started out on MAD and Fortran IV. I wouldn't suggest that route to anyone I cared about.

Slapdash
March 10th, 2005, 11:56 AM
How about Gambas ? Its a Basic like interpreter type language or does that not really qualify?
http://gambas.sourceforge.net/

std
March 16th, 2005, 11:31 AM
I'm a bit reserved in reccomending Gambas to someone who has never programmed before. I couldn't play with it, I admitt, I downloaded it a while ago but couldn't compile it, and never got the chance to try it again (lack of time...). I did read much about it, and, while it does address many of the issues I didn't like about Visual Basic, I still don't think it's good to teach basic programming skills.
My first grasp at programming was BASIC on the C64, but I didn't play too much with it. I later discovered C (in...*think* '96 I guess) and couldn't get away from it :P. Though I'm not exclusivist and I strongly reccomend Python as a good starting point. I never did serious development with it, just played with it, but I was well impressed.
I also found Ada to be a good programming language. Although it's not quite my style, too verbose, but I did like some things about it -- standard compliance, excelent typing etc. Could make for a good start, but I don't think it could lead anyone too far. It lacks many of the libraries, although I warmly welcomed the Gtk bindings for it.
Ruby also makes a nice start.

Yet avoid programming COBOL if you can :P*

_____________
*kidding. It's an old joke.

Rogue Elephant
March 17th, 2005, 12:00 AM
I am also new to programming and should be returning to this thread with all the latest 'cool, fun and easy' gateways into programming I come across...

Today I found the following:

BASIC is supposed to be one of the simplest lingos and this particular tute is for kids
http://pages.intnet.mu/jhbpage/Program/Qbasic/tutorial/Ch1c.htm

This introduction to a CS course has a few little interesting foundational facts
http://216.239.59.104/search?q=cache:ahpwsIuI-K8J:www.cs.ucla.edu/classes/winter05/cs31/lectures/intro/introNachenberg.ppt+%22the+simplest+programming+la nguage%22&hl=sv&client=firefox

This C++ book is for non-programmers written in conjuction with a non-programmer
http://www.steveheller.com/cppad/Output/dialogTOC.html

gogodidi
March 18th, 2005, 05:11 PM
I first learned HTML

then I learned CSS
Then Javascript
then PHP

now im moving on to C++, if only the IDE would work...

this is the problem (http://www.ubuntuforums.org/showthread.php?p=98584#post98584)

thumper
March 24th, 2005, 11:15 AM
Ever since my family got its first computer I had wanted to program. My father kept trying to push me into learning BASIC (this was in the early 80s), but I was not really interested. I started with Turbo Pascal 5.5 when I was 15. Been really surprised that no one else has mentioned pascal. Did a programming class while at school, and used to get books out from the library and type in the code. This was how I learnt basic data structures (linked lists).

I did a computer science degree at university which made us learn more pascal, modula 2, assembler, C, ADA, Haskell, Prolog, LISP, Objective-C, SQL, LaTeX (sort of coding for documents).

My first job was my introduction to C++. Loved it and it is still my language of choice for working in. Since university I have taught myself Perl, Python, [DX]?HTML, regex ;-), Javascript, Java, shell.

Mostly when learning something new I will get a book. I know that there are many online resources, but for some reason I still prefer a book that I can flick through and skim read.

Currently where I am working I use C++ for the main work, perl for some scripts that others have written that I need to use/modify, python for my own scripts and testing my components, HTML for documentation, shell for scripts to kick off tests/applications.

I really like python and C++. But I have to agree with azz, it all depends on what you want to do. There is no way I would do dynamic web pages in C++.

For learning, I would suggest the following books:

C++ -> Accelerated C++ (http://www.amazon.com/exec/obidos/tg/detail/-/020170353X/)
Python -> Learning Python (http://www.amazon.com/exec/obidos/ASIN/0596002815)

Tim

TjaBBe
March 24th, 2005, 11:37 AM
I started out with Turbo Pascal and HTML when I was round 15. Then I moved to Delphi. After that I went to a Computer Science University where I learned Java, CSS, ASP (yuch :-& ), more Delphi, C, C++ and SQL.

In the meantime I teached myself PHP and some basic Bash and Perl scripting. And that's about it :).

Vrok
March 24th, 2005, 05:15 PM
It may sound strange, but I started with... JavaScript. :)
I even didn't know anything about html - I just know that I should write <html><body><script language="JavaScript">code</script></body></html>. Of course, all functions I know were alert() and prompt().
Later, I found a book about Tubro Pascal (and I've used the TMT Pascal Compiler).
After that, I somehow got a Delphi Personal. Then my fellow showed me Linux, and therefore I left Delphi (Kylix sucks!) and learnt C/C++.
I also know few other languages, I just can't remember how I learnt them. ;)

dannyp
March 25th, 2005, 03:29 PM
Hello All,

After reading this forum I think I better take a look at python/ruby. I learned the basic of C, and then jumped into Perl for job reasons, didn't like it much. I haven't seen many opinions of Java in here, Java is what I am using now and I love it, I learned from a book and that was all I needed, everything just fell into place. It is easy and can do pretty much everything you need.

iant
March 26th, 2005, 04:45 PM
for those wanting to begin learning to program using ruby there's a good guide here:
http://pine.fm/LearnToProgram/

like i said previously, i've become quite taken with this language and i see it's gaining increasing popularity (which i expect is largly due to ruby on rails (http://www.rubyonrails.com) ). Because of it's ease of use I really don't think it's actually a bad language to learn to program in.

jamin_l
March 26th, 2005, 08:11 PM
Because of it's ease of use I really don't think it's actually a bad language to learn to program in.

Absolutely. Those new to programming need to see that programming doesn't have to be hard.

drewlander
March 29th, 2005, 12:00 PM
I wanted to be a weatherman for 8 years, then my senior year in HS I took a college level programming class, and have been programming since :)
Started with C++ and have grown to learn C#, php and asm :smile:

Leif
March 29th, 2005, 12:32 PM
If I could go back and choose the order in which I learned programming languages, I would choose C/C++ - Lisp/Prolog/Haskell - Asm - Java. Now, Asm and C might never be necessary for you, but these are kind of the building blocks for the bigger stuff, and just getting an understanding of them can't hurt. You can replace Java with the Python, both are fine. So far I'm reiterating stuff said by many before in this thread.

My main advice is that shortly after picking up a sequential programming language like C/Java/Python etc., before you get too comfortable in that mode of thinking, learn functional programming. I only got introduced to it about after 10 years of programming, and it did my head in, which is embarrassing. It shows you a different way of thinking about things, which in a good number of cases can result in solutions which are far more elegant and efficient. Functional languages get very little love for practical systems, usually with good reason, but I really recommend that you pick up both ways of approaching problems.

CrashTECH
April 6th, 2005, 04:32 PM
I started with BASIC on a 386 machine (Yay!). Then I picked up some VB in HS (it was all that was offered) and taught myself some HTML and JavaScript. Once I got into college I learned C++, ASM. As part of my program, I took a Co-Op job and so far here I have learned C#, ASP, some PHP, more JavaScript, VBA....

In the past 3 months alone I have written around 6k lines of C# code for one project. Most amount of coding I have ever devoted to one thing.

yusufk
April 20th, 2005, 10:36 AM
I think it doesnt really matter which one you choose for a start. The best advice is: Dive right in! Choose a language, and find out as much as you can about it. The idea behind all of them is pretty much the same, even though the syntax isn't. Once you've got a basic understanding of programming you'll be able to make a better choice as to which way you want to go.

I started of with Basic on a ZX Spectrum, moved on to Basic on the Commodore 128, moved onto GW Basic on a pc, then Turbo Pascal, then Delphi, then C++, touched Java recently, Java script. I did do some perl, python, php stuff at some point and would like to give them another go, especially now that Im enjoying my Linux experience.

I also do some mobile developement (for phones), MIDP and Symbian. Its just a pity that I have to resort to windows for the Symbian Development.

ZiZe
April 20th, 2005, 06:59 PM
i actually startet with webpages in *uhm* MS word :-#

was a part of a school project 4-5 years ago, i had almost never touched a computer before, i just heard 2 guys in my class talked about making webpages in their project. I just tought: "webpages? sounds cool, i want to do that to."
Made a terrible looking webpage, so i knew i had to learn how to do better :p
started to learn html and design. then one day i discovered that you could use something called perl scripts to make guestbooks, started to read about perl, and quickly learned that you could do so much more. used it for a year or so.
Then i discovered php, wich now is the language i use most. i stopped using perl because i found php much easier. tried to learn c/c++ and other languages several times, but i never quite got it. Going from php to a language like c or c++ is not easy imo. But lately i switched from windows to linux, and have started to read more about c++, a bit frustrating, have to "unlearn" a few bad habits i have. but i'm getting there.

If i could use a time machine, i would zap back in time, and give myself some resources on programming in general before i started to learn anything.
i feel i could have learned so much more by this time if i just knew more about what programing are about when i started. :)

Merc248
May 2nd, 2005, 09:01 AM
I started with HTML... and never really got into programming until this year, when I started taking CS classes on C++. I tried getting into C++ (before taking the classes), PHP, Perl, and Visual Basic, and I just couldn't really get into the programming mindset.

atoponce
May 4th, 2005, 03:45 AM
I use windows (my copy of ubuntu is on its way) and i have NEVER tryed programing before.

Can you give me some basic tips?????](*,)

Basic tips? Let's see. I can think of two effective tips.

Go to your local library or bookstore and get a book on really any high-level language (C++, Java, Python, Ruby, etc.). Read the book cover to cover copying all the code and practicing the exercises given. By the end of the book, you should at least know the basics, and feel comfortable with the language. Check out another book, and do the same.

Or....

Go to school (university, college, whatever), and take courses. This is the expensive way, but probably the most effective. Nothing beats the stress of trying to finish a program before it's deadline. After only a couple of semesters, you will feel confident in your programming skills, and be able to tackle most challenges.

Programming really isn't that difficult, depending on what you want to do. We as humans in general think in "pseudo-code" all the time. "If it will rain, then I will take an umbrella." Or, "If John and Kerry both want McDonalds, then I will have McDonalds too." You get the idea.

mohaham
May 7th, 2005, 03:59 AM
I would recommend Python, Java, C#, Perl...

Preacher
May 7th, 2005, 12:44 PM
Ok. I have just bought the Teach yourself C++ in 21 days (Not that I am going to learn such a lang in 3 weeks :)

My question. I cannot even get the Hello world to run. I am on Ubuntu 4.10 - still waiting 4 5.04 cd. I have checked what compilers I have and it says gcc. I have tried many options but the only reslt I get is a text file for hello which I tried to compile from hello.ccp.

Sorry if this is in the wrong forum or if the question sound stupid but I am a newb

Thanks
Preacher

Quest-Master
May 7th, 2005, 05:24 PM
Ok. I have just bought the Teach yourself C++ in 21 days (Not that I am going to learn such a lang in 3 weeks :)

My question. I cannot even get the Hello world to run. I am on Ubuntu 4.10 - still waiting 4 5.04 cd. I have checked what compilers I have and it says gcc. I have tried many options but the only reslt I get is a text file for hello which I tried to compile from hello.ccp.

Sorry if this is in the wrong forum or if the question sound stupid but I am a newb

Thanks
Preacher
g++ hello.cpp -o hello

That should work.

Preacher
May 7th, 2005, 05:46 PM
Thanks. What I did was go into emacs and did the compile there. that seemed to do the trick. Thanks for your help. That entry I also did and it worked :)

csowm5je
May 8th, 2005, 04:02 PM
www.icanprogram.com (http://www.icanprogram.com)
Couple of years ago this site used to offer excellant introduction courses on linux programming (Makefile, source control...). After reading Eric Raymond's article about python, I was searching for python books and tutorials online and I came across this site and there is a python course(not introductory) but due to lack of students this course is not offered anymore but I was given access to the webpages.

vague-
May 8th, 2005, 04:43 PM
I went for C as I had started using open source software and I wanted to be able to fix problems I found. I started by using a borrowed copy of "The C Programming Language". I then performed a few tasks set by Computer Science students I knew at the time. I already understood the base constructs, so the tasks mostly revolved around small applications of terminal I/O and file parsing. I then moved onto Berkeley sockets of my own accord. Finally, I started reading code from the open source software that I was using - this was the single biggest aid, you can learn a lot from code.

I found other languages easy to pick up after my time with C. I am not sure why, but I guess it goes to the CS students who first helped me. None of them told me hacky or quick fixes, all the answers I recieved were good conceptual answers - and rarely code, which also helped. I guess I'd say learning to program and learning how to program are two distinct paths, of which I would recommend the latter.

mostwanted
May 12th, 2005, 05:38 PM
I was really into graphics (still am) and also animation some years ago and I started doing animations in Macromedia Flash.

After some time it got boring and I wanted to make games in it, so I learned ActionScript and programmed a few games, like a platformer and a space invaders clone.

I'd also learned HTML and went on with PHP after ActionScript, so I could make my websites dynamic. To do that I also had to learn basic SQL.

Lately I've been into Java, which is, I guess, my first serious programming language. It wasn't that difficult, as most programming paradigms are the same in most languages, but learning object oriented programming has been hard.

At the moment I'm still programming in all those languages. Each one is good at what they are intended for: AS for applets, PHP+SQL for dynamic websites and Java for applications (although it can be used for applets as well). Some day I'll explore other languages like Python, C, C++ or Objective-C (when I get a Mac :P ).

XDevHald
May 12th, 2005, 05:45 PM
I was really into graphics (still am) and also animation some years ago and I started doing animations in Macromedia Flash.

After some time it got boring and I wanted to make games in it, so I learned ActionScript and programmed a few games, like a platformer and a space invaders clone.

I'd also learned HTML and went on with PHP after ActionScript, so I could make my websites dynamic. To do that I also had to learn basic SQL.

Lately I've been into Java, which is, I guess, my first serious programming language. It wasn't that difficult, as most programming paradigms are the same in most languages, but learning object oriented programming has been hard.

At the moment I'm still programming in all those languages. Each one is good at what they are intended for: AS for applets, PHP+SQL for dynamic websites and Java for applications (although it can be used for applets as well). Some day I'll explore other languages like Python, C, C++ or Objective-C (when I get a Mac :P ).
Just read books, and studied until my eyes hurt, then used what I learned and made stuff, messed up a lot and from there, I learned from what I messed up on and tweaked it into something cool ;)

Nano
May 12th, 2005, 06:44 PM
Just read books, and studied until my eyes hurt, then used what I learned and made stuff, messed up a lot and from there, I learned from what I messed up on and tweaked it into something cool ;)
Same for me

Havoc
May 20th, 2005, 08:02 PM
Hello,

Python looks good enough for beginners, but isn't it good enough for larger projects? Or is it just an "Introductory Language" where you learn all the basics and then you move on to something else (Like C++ or something like that)?

I think that Python is good for projects that don't need to access the hardware that much, e.g You can't really write a kernel or a 3D Graphics Engine in Python, but you can write scripts, or a "Glue" between other Apps, wilst C++ is great for low-level operations (Accessing the Hardware).Could someone elaborate on this?I'm a total beginner (BUT, I've used Yabasic on my PS2!!!), and I'm looking into programming and 3D Modelling (Blender works great with Python)...

One question, does the knowledge gained using Python cross over to other languages? Like C, C++, Whatever?

Thanks. ;-)

alexrait1
May 20th, 2005, 08:28 PM
That's not true. Every programming language is capable to do everything in this way or other since they are all equivalent to the Turing machine.

As for python it depends on whether an appropriate library was written or not. And if you miss something you can always build your own library in c/c++ with python binding.

Python in its structure is not that powerful as c++, but the in the end it can do many things quicker and neater. It can suit for large projects and whatever you wish. Everything depends on how you design it.

Stormy Eyes
May 20th, 2005, 08:50 PM
I started with C, both on SunOS with vi and Sun's C compiler, and on DOS with Borland Turbo C.

ChrisG
May 21st, 2005, 12:41 AM
I'd like to learn C++ and Python, but I say that Visual Basic .NET is a good beginner. Even though it basicly screws up the way your suppose really program, but it gives you a good look at basics. And plus, with visual basic you won't have to create the window in complete code... :wink: \\:D/

Gsibbery
May 30th, 2005, 04:21 PM
I started out with COBOL, JCL and Assembly on an MVS mainframe. On UNIX, I would suggest starting out with Java nowadays, as the syntax will get you familiir with the C/C++/PHP type languages and is more portable than C or C++ alone.

Gordon Freeman
June 3rd, 2005, 01:21 AM
I wanna program.

That could mean games or internet utilities or system utilities or anything! You would not use php for games, nor would you use C to make dynamic websites.



No, you're still not getting it! He justs wants to program! Nothing in particular, he just wants to learn, and a discussion of which program is a good start is a perfectly valid one. Many people (myself included) just got the idea that they'd like to have a go. You don't start thinking about specific programs, until you've started and learnt a bit. He's asking how do i get into it, make a couple of nifty programs, and the advice has been good.

Gsibbery
June 3rd, 2005, 09:07 AM
No, you're still not getting it! He justs wants to program! Nothing in particular, he just wants to learn, and a discussion of which program is a good start is a perfectly valid one. Many people (myself included) just got the idea that they'd like to have a go. You don't start thinking about specific programs, until you've started and learnt a bit. He's asking how do i get into it, make a couple of nifty programs, and the advice has been good.

Python might be a good choice then. It's simple, stragithforward, and has clear syntax and supports OO is you want to do that. In my experience a lot of beginners have a rather tough time with C/C++ as their first languages.

YopY
June 3rd, 2005, 01:21 PM
I was taught C++ and x86 asm in college, later I started learning C# which I enjoy quite a bit.

I would go with C# for a first language, there are good books for it around, even ones based on Mono.

Of course I'm biased.
Some basic tips?

1. Determine why you want to learn how to program
2. Ask yourself what you want to program
3. Google around for some info
4. Don't grab too high straight away, learn some of the easier script languages first before going to higer languages like C and Assembly. PHP is a good choice for webscripting, and many people say that Python is a good language to learn firstly if you want to buld programs.

Do keep in mind that it takes a lot of time, patience and effort to learn how to program.

As to answer this topic's question: By doing it.

My first language would be HTML, even though that's not really a script language. After that, i was bored and googled for a good language i should start with. Python was suggested, so i took a python course. I learned the basics, but i quit learning it cause there were better things to do.

And more recently, i've been learning PHP. Started out as a school project, and seeing that i'm going to go to a higher programming education next year, i volunteered to do the coding on that one. I had a PHP book that learned the basics and syntax, stuff like that, but for the rest you need to just do it, create programs / sites, read up on stuff, etcetera.

But firstly you need to ask yourself what you want to program.

DarkKnight
June 4th, 2005, 05:31 PM
I'm currently doing a CertIV in programming.

I wanted to make sure I had what it took and if I wanted to do it for a living... I start my bachelor later this year. ^__^

student
June 16th, 2005, 12:45 PM
The first I learned was javascript :D
then c, php, java, little c++, vb.net, c#, oberon,

some at school, some at home...

the funniest one I learned was OS400 scripty-thingy \\:D/

Dave_is_sexy
June 22nd, 2005, 08:29 PM
Oh me too! I wanna know enough to write ebay :smile:

...in something nice and text based that doesn't need compiling to run. Perl? Php? Python?

pdpi
June 24th, 2005, 01:15 AM
EDIT: I apologize up front for the huge post. I got a bit carried away, it seems.


I started when I was 12, programming Lego robots on an amstrad, using Quick Basic. It was indeed quick and dirty, and we controlled the robots by directly sending information to the ISA BUS. I only understood that that's what we were doing years later, though (and, interestingly enough, only after I understood the risks of any old person who sat at the computer being able to do it). Proceeded to Pascal a couple of years later, with a short bout of GW Basic in between. After a few years of no new languages (though I made a couple of shy attempts towards VB, which I thoroughly hated), I found myself trying a wee bit of C. Didn't really get far, though, and got back to Pascal in high school. When I started college, I was immediately presented to Mathematica, and am still thankful for it. I started hacking away at HTML/CSS (for all it's worth, programming-wise), and LaTeX, which is still, in my opinion, the easiest way of generating beautiful, professional quality documents (and a lesson in code quality: 6 bug revisions in the last 10 or so years, because no more bugs were found). Had to learn some Scheme, which did me plenty of good, in terms of how I view algorithms and code in general. I restarted coding in C at this point, this time in earnest. In parallel, I started dabbling in POV-Ray. Java came slightly later (last semester), plus some LisP this semester. I also started learning Python a couple of weeks ago, on my own, though I only started **really** working on it 2 days ago, and only kind of, as I have exams coming up.
Bash, a bit of Awk and sed, lex, yacc and the assembly language for a small teaching processor all come in there somewhere, in the last couple of months.

After this rather large tale, My suggestions on where to start programming are as thus:

- POV-Ray and HTML/CSS are very good places to start, if you are the sort of person that needs to see results **IMEDIATLY**. POV-Ray is better than HTML/CSS because it is a turing-strong language (that is, you can use it to solve essentially any problem that C can solve), and can be used to generate some pretty nifty stuff. See www.irtc.org for some (breathtaking) examples. HTML/CSS shows a very interesting notion, which is the separation of formatting and text, which is very very good to learn, and is a nice notion to have when you start doing "real" programming (it kind of goes well with OOP),

- Of all the languages I worked with, Python has to be the best for a new programmer. Very simple syntax, solid set of standard libraries, you'll go from struggling with the really annoying phase of not knowing the syntax or what function does what you want to the phase where you're actually learning the basics to do something useful (some simple algorithms and data structures) in no time. Also, since it's interpreted, and has an interactive shell/interpreter, it's brilliant for experimenting and actually learning the ropes in programming. Also, since it imposes some syntax on you, you'll get used to write code in a way that's mostly the standard, pretty print, sort of code style

- C is a nice language, but is NOT newbie friendly. Still, if you have the right sort of mindset, it's design is quite KISS (keep it simple, stupid) oriented, and you'll know essentially all the normal stuff in a couple of weeks. Off to the more interesting and more elaborate stuff, then. It's quite a bit more difficult to deal with than python in that you have to do the memory management and pointer math yourself, which most newbie programmers find a bitch to do, and even for more experienced programmers is a source of nasty bugs. It is still quite powerful, and mostly the standard in linux (though KDE, for example, is C++). It's also the venerable grandfather of a rather prolific family, which includes C++, C# and Java, which makes it a good bet to learn anyway.

- Java seems a fine language at first, but I'm starting to feel towards it in language world much like I feel towards MacDonalds in the food world. It just seems lacking in maintainability, and the personal experience I have in that area only emphasizes that feeling. It lacks the very short code/test/debug cycle of Python, and is significatively more resource-expensive than C, thus making for a very poor mid-term. Also, the last version (1.5) inserted into the language possibply the worst syntax ever, (perl and brain**** are exempt from this competition :P), which alone would make me want to throw it away. However, it also has a VERY EXTENSIVE set of standard libraries that make newbie programming that much simpler. Much of the sfuff that in C requires some crazy juggling to do is a function call away in Java.

- Scheme is a very very simple language hidden in a very very complicated looking syntax. Just learn to properly indent it, and it's quite readable. It's naturally conductive towards the recursive/functional side of programming, and that alone makes it a fine choice for a second language to learn, simply for the mind-opening effect. However, I'm yet to learn how to do useful stuff in it.

- LisP is Scheme on steroids. It's a true multi-paradigm language, and is a language that naturally evolves to fit whatever it is you're trying to do. It's profoundly different from anything else I've worked with. It takes a while to grok it, but Eric S Raymond is quite right in saying that it is an enlightening experience. It also makes you look at other languages and wonder how they survived against LisP. IMHO, it was a matter of having too many features way way ahead of its time, resulting a language that would be fine today, but prohibitively expensive 30 years ago (worse still 50 years ago, when it was invented)

- (La)TeX is quite worth learning for its plain usefulness. After a short if somewhat steep learning curve for most people (writing code to type a document I could write in Word? you have to be joking me!), it quickly becomes second nature, and makes you wonder how the rest of the world survives. Want a footnote? don't fumble around menus looking for how to add the footnote, how to add the little index to point towards it, get frustrated that the footnote option is disabled, the works. Just type \footnote{footnote text here} where you want it to go and go on with it. Your essay grew and the index is completely borked? in LaTex, \tableofcontents will find your \chapters, \sections and \subsections (and smaller stuff), figure out what page they fall in, and keep the index up to date. It is however a bit quirky and hard to debug. Plus, formatting is a bitch, by design (it's all done automatically for you, based on a template. If you don't know how to write a template, you shouldn't be fiddling with formatting either way)

- The Basic dialects I worked with are beyond utility nowadays, but they were fine learning utensils back then. Still, funcions and such were beyond their ilk, and spaghetti code was the order of the day. I would NOT reccomend them to anyone in this day and age.

All in all, I'd say that Python would be a good first language, learning C next and a LisP dialect. Java would possibly come next. If you need to write a lot of reports, and .pdf is an acceptable format, LaTeX should happen somewhere, possibly in parallel with C. If you're one with a small attention span, and pretty images would make it easier for you to keep on going, I'd start with POV-Ray before going for Python. In POV-Ray, go as directly as possible to the condtional/loop part, so as to start programming proper. If you're an avid linux user, learn how to use the shell. Not exactly programming, not exactly NOT programming. The basics of sed, awk, grep, bash, and a number of other tools are the reasons why so many people prefer the shell to any graphical file browser. They are quite robust and really make life simpler once you learnt them. Even just knowing that awk '{print $n}' prints the n-th word in each line of input can make all the difference, sometimes.


Of course, this supposes you have the time and desire to learn multiple languages. If not, and you know what you want to learn, go with one of php, python or perl for web/server-side development, java or javascript (depending on scale) for web/client-side programming. You'll also want HTML+CSS for both of these, whichever way you look at it.
take up C or C++ for system programming. Either should do, and both have their own brand of problems and advantages.
Learn both pascal and scheme if all you want is to understand what programming is about, but consider learning python instead if you just want to learn what programming is about AND still have something useful to work with.
Learn POV-Ray if you want some light introduction to programming, and graphics are your thing, but the lack of a steady hand has deterred you from getting anywhere with other programs. In any project of significative dimension you'll quickly take up the use of loops and conditionals, and these quite literally constitute all the core understanding about programming.

The Gray Hat
June 25th, 2005, 07:16 AM
I've never had any luck learning from books, and I can't get classes right now, anybody got any suggestions on ways to learn?

Arto
June 27th, 2005, 05:14 AM
I've never had any luck learning from books, and I can't get classes right now, anybody got any suggestions on ways to learn?

That depends on what level you are now. If you don't how to program at all, just go through an online tutorial or two. For example, Why's (Poignant) Guide to Ruby (http://www.poignantguide.net/ruby/), or Dive Into Python (http://diveintopython.org/). There's little reason to purchase a dead-tree book when the net is full of tutorials for every imaginable language.

If you do have the basics behind you alrrady, just think of an interesting project (a game, for instance) and start coding. You can look up stuff as you go (in the language reference, which you'll find online, no doubt, for whichever language you choose). That's how I learned, 10 years back; didn't need to read any books. Of course, since there's so much open-source software to learn from, might be a good idea to read through other people's sources as well, you can learn a lot that way (provided they're not totally uncommented).

granite230
July 2nd, 2005, 11:47 AM
I don't have much experience programming stuff. We learn C# at school but we 'learned' it from three different teachers using 3 different methods. Very confusing.
I realy don't understand C#. We're only messing around at school and its getting harder and harder but nobody understands even the basics. And now I've been reading some stuff for a while at home to learn it myself but I don't realy get it anyway.

So now is my question: what's the best way to learn C# asap? Are there any realy realy good books out there that I should read? I prefer to program some Linux apps in Mono but I've never done that before. I previously used Visual Studio but I would realy like to learn C# programming Linux apps. I realy don't know what's the best way.
I don't realy have previous experience and I don't have time to learn Python first (that sucks about school... can't do it my way).

What do you think I should do?

sjmorgan
July 2nd, 2005, 05:31 PM
There's no magic trick to it. Get a good book (there's usually 1 definitive book that all the experts recommend e.g. the K&R book for C), read it and do the exercises. Easy.

The difficult bit is maintaining your motivation which, frankly, nobody can help you with. A lot of people really want the end result without the "middle bit" but if you're serious about programming you'll see the middle bit as fun and be too busy doing it to care about the end result.

granite230
July 2nd, 2005, 07:15 PM
The K&R book looks good, but it's used for learning C, not C#. I don't know the differences but I realy need to learn C#. It's not that I don't want to start with C or something, it's just that I have to learn C# for school... and I don't have all the time in the world... wish I could do this my own way ](*,)

oh and by the way, I cant order that book in the Netherlands... I've spotted a lot of realy nice books an Amazon.com but when I try to order them here, they can't deliver it...

So I don't have a choice what language I want to learn first, I have to learn C# fast, but I can't order the books I want... very frustrating.

JPatrick
July 6th, 2005, 12:45 PM
I learnt C++ from a book.

PHP, I learnt by adding features to my forum :P

dolny
July 10th, 2005, 07:09 PM
What do you think about Ruby as a language which will help acquiring the knowledge about C++ and making it easier to understand?

C++ is probably too hard for me as I never coded before. I found a great book about Ruby and just began to read it. Great thing.

I want to be a game programmer. I mean: I am 22 years old and I'm just beginning so I mean - I want to create a free game for my own satisfaction + for the people.

Since I'm not an egghead ;-) - that means I'm not good at maths, physics and chemistry :) I'm the guy who prefers to read 'Sleepy Hollow' instead of reading a scientific book - I perceive it as the only way to learn how to program. What do you think guys?

Is Ruby a good language for game creation?

Arto
July 11th, 2005, 11:59 AM
What do you think about Ruby as a language which will help acquiring the knowledge about C++ and making it easier to understand?

Yeah, that's not a bad way to go, although once you've learned Ruby you will start questioning why you'd want to use C++ (unless, of course, you were in a situation where you'd require the raw speed of 'high-level assembly' languages like the C derivatives.)

Having programmed many, many years in C++, Java and Python, among other languages, and having just recently taken the time to see what the Ruby hype is about, I must say I regret not learning and using it earlier. It's easily the most object-oriented language this side of Smalltalk, and I just love the metaprogramming facilities it offers. It's displaced Python as my favorite language, which is saying a lot since Python isn't half bad.

So, for learning object-oriented thinking, Ruby (or Python, or Smalltalk, ...) is definitely recommended over C++. The big picture will be easier to fathom when you don't have to worry about the low-level, nitty-gritty details.


C++ is probably too hard for me as I never coded before. I found a great book about Ruby and just began to read it. Great thing.

Are you reading the Pickaxe (http://pragmaticprogrammer.com/titles/ruby/)? It's also available in the Ubuntu rubybook package; you can access the book, after installation, at file:///usr/share/doc/rubybook/html/index.html with your browser.


Is Ruby a good language for game creation?

In terms of programmer productivity, definitely. In terms of computer performance, it depends. If your game requires 100% of the raw speed the computer can give (3D shooter?), it might not be suitable by itself (see note about C extension modules, below); but then again, for creating a strategy or board game it would be a very good match.

Ruby's got good GUI bindings (Tk, Wx, GTK, etc) as well as an OpenGL & SDL interface, so everything you need is there. The OpenGL bindings are written in C and in some cases you can actually approach the speed of a C program (see the ruby-talk mailing list), though it depends on your specific situation. For games like the next big Civilization or Age of Empires clone, the speed will be more than sufficient.

Performance-wise, there are a couple of upcoming features you will want to watch: the next major Ruby version, under development now, will include a new virtual machine architecture called Rite that will significantly speed up Ruby; in addition, there is a RubyToC project, that can optimize Ruby code through on-the-fly conversion and compilation of hotspot functions into C code, which are then dynamically loaded into the running program. And of course, if necessary, you can always write the speed-critical parts of your game as a Ruby C extension; the code will integrate seamlessly into Ruby (see the Pickaxe book for details).

To get a general idea and see good examples of what kind of games can be written in a high-level language like Ruby, take a look at the Python game development project (http://pygame.org/). Any of those games, at least, could as easily (or somewhat easier ;-) ) be written in Ruby.


I'm the guy who prefers to read 'Sleepy Hollow' instead of reading a scientific book - I perceive it as the only way to learn how to program. What do you think guys?

Well, I don't know that reading 'Sleepy Hollow' is the only way to learn how to program ;-) :razz:

dolny
July 11th, 2005, 04:33 PM
LOL. Yeah, I was tired. Thanks for your answers. I appreciate it.
What I mean is that I suck at physics and stuff. Although I would love to finally learn how to program.

t2kburl
July 17th, 2005, 04:56 PM
After spending an hour + reading this thread, I have decided to start with Python, but keeping the Ruby book bookmarked.
My first programming class starts in a month and I know I'll be starting with Qbasic there, then VB6.0. (its part of my Electronics-Computer systems technician program, Not an elective)
Actually, I did some programming on an Apple][ back in the day, but all I remember is that it had a lot of goto and gosub stuff.

hzs202
July 27th, 2005, 09:08 PM
Python is a mitre saw.

Java is a bench saw.

C is a screwdriver.

C++ is a Phillips-head screwdriver.

C# is a screwdriver that has a funny head.

perl is a hammer.

What do you want to build? You cannot argue what tool is the best without knowing what you want to do!Personally I think C is always a good programming language to begin with especially in a Unix/BSD/Linux environment. Because most of the OS is written in C/C++. Unless Ubuntu is doing something that I am not aware off?

Arto
July 28th, 2005, 04:08 PM
Unless Ubuntu is doing something that I am not aware off?

Well, unless you ignore that Mark Shuttleworth, the founder of Canonical and Ubuntu, is a strong supporter of Python ("I'm a great fan and heavy user of Python. I prefer to fund work done in Python." (http://www.markshuttleworth.com/bounty.html)), and that the Python runtimes, documentation and the Dive Into Python (https://www.ubuntulinux.org/books/python) book come bundled, ready-to-use with every Ubuntu installation (as dependencies for the ubuntu-desktop package), and that Python is heavily used in system scripting, with Canonical busy rewriting (or funding rewrites of) large portions of legacy C/C++ codebases into Python (http://www.bazaar-ng.org/).... ;-)

Mobus
July 29th, 2005, 07:52 AM
I personally learned QBASIC as my first language, That's what the library had in stock. but in preparation for that I learned HTML and XML, not necessarily Programming languages, but it'll help you get used to the computer and not being stuck on the second greatest source of evil, WYSIWYG. I would reccomend BASIC, QBASIC, or VISUAL BASIC to any first programmer in fact because of its obsotlete stage. Your first programming language should be something that should be easy to learn, not exactly something that will bbe useful. Your second programming language should be somthing that is more useful, which is good since you've got your obsolete learning backround. I even created a 5 step prigram to teach ANYONE programming, even my mom... o.o Basically, here's a good list of a good second language choice list (in my opinion):

C/C++/C# = Applications/Software that you want people to actually use on their computer

perl/php: WEb (don't even TRY to use an interpred language for non-web solutions. You will be sorry)

Java: if you want to completely eliminate all advantages of compiled and interpreted languages.

PASCAL: If you do nothing but math... math... science... math... math... math.. numbers..

COBOL: If you are a businessman

Python: If you want to be a showoff

Visual Basic: If you don't want programming as any job to make any money of any sort.

BASIC: Don't even think about it

QBASIC: If you want to support a Microsoft spinoff that didn't take much thought (much like patenting emoticons

HTML: Can't even consider this a programming language. Good for web pages and readmes. Also a good introdocution to an introduction to programming (as in learn HTML, the QBASIC, I had 2 "Introduction To's" On purpose, not a typo)

XML: Again, like HTML, not even a programming language, but still needs to be noted. I find this language totally useless. It is WAY too complicated for just giving your HTML tags new names..., yet a nice bridge from HTML to Programming.

DHTML, SHTML, PHTML: the name says it all. No different than HTML other than 1 letter, and a bounch of pointless added quirks.

Jivicin
August 2nd, 2005, 09:15 PM
I think the easiest way would be to go to college and sign in blood for a computer science major!!! :grin:

Seriously though, if you're good in math and you have an older pc (perferably with win95 installed), QBasic is really simple to learn. I started with that.

I worked myself up to TI graphing calculator basic language. There syntax is a bit trickier sometimes.

In college, my first courses delt with C++. After playing around with basic, C++ wasn't that much harder. After C++, then Java, and VB.

I think I would save assembler for last (or never if you can help it). It tends to be cryptic and hard to understand.

N'Jal
August 2nd, 2005, 09:27 PM
Two years of MSVB, forgot it all towards the end as i started to teach myself C, to give me a head start in Uni, hope to never have to touch Basic again. C for Dummies is awesome!

Rylem
August 5th, 2005, 02:00 AM
I wouldn't recommend doing what I did, but how I learned is below:

1 year of trying C++ ( didn't work too well first time I tried it )
10 Months of Quick Basic
5 Months of Liberty Basic
3 Months of Python
6 Months of Ruby
1 year of PHP
2003 - current of C++ ( my favorite language now besides PHP )

Like I mentioned, I wouldn't recommend doing it like I did.

Jessehk
August 5th, 2005, 02:47 AM
Mainly self taught from books ( usually of the 1000+ page variety ).

I am still quite a beginner.

Rylem
August 5th, 2005, 05:51 PM
Books are a nice alternative. You can try amazon.com for some. I bought some really good ones from there, even one about DirectX programming even though I dont plan on programming in DirectX it never hurts to learn.

Heres a website you might want to try. It filled in alot of gaps for me:

http://www.cplusplus.com

johanvdw
August 10th, 2005, 05:20 PM
I learned programming
.bat files
gwbasic, qbasic an quickbasic
Pascal and Delphi
PHP
C++

For a beginner: the language shouldn't be the constraint to learn programming concepts. I would start with an easy language like Python, PHP or Pascal.

I wouldn't start with C/C++.

Once you are more confident and actually really want to program something (a website, a program, ...) you should choose the programming language.

The most important thing however is: programming itself. You don't learn to find errors in your code by reading other peoples code or learn to solve programming problems by reading other code (it is interesting however once you have to develop timeconsuming algorithms). Both things are what's programming all about.

vimme
August 11th, 2005, 02:14 PM
Once upon a time I started out with visual basic. Did some little apps, came to conclusion that it isn't my thing.

After that I got to know a bit of PHP, now I can say that I know some basics out of it but can't really code anything with it. Reason is that I didn't / don't have any projects to boost learning.

Then I discovered Python. Simple, very n00b friendly language to do scripts. Scripts are the thing I like to code, gives the brain something to work with ;) Someone likes to fill crossword puzzles etc. I like to do short scripts, nevermind the usefulness of them...

Python is one reason why I turned to from windows linux too, more useful with linux than win. Or atleast I think so...

TreeFrog
August 11th, 2005, 05:48 PM
Pascal > C and assembly > C++ > Then Delphi. Most time in Delphi.

Hey did Kylix ever make it out of the box or is it dead? I must check it out.

Have not programmed in a long long time but Ubuntu is making that itch come back.

I wonder what I should start with..
Just want a GUI to run some simple scrypts?

Treefrog

Arto
August 12th, 2005, 02:41 AM
Hey did Kylix ever make it out of the box or is it dead? I must check it out.

I think Kylix is still alive, don't know how widespread its usage is though. Another alternative that might be worth checking out for Linux guys coming from Visual Basic or Delphi is REALBasic 2005 for Linux (http://www.osnews.com/story.php?news_id=11461). It produces standalone executables for Windows, Mac OS X and Linux, and it's written and developed in itself. Looks very promising for basic RAD stuff.

dmsynck
August 12th, 2005, 03:54 AM
I too am fairly new to programming. I have written a few little programs in Java and Python mainly for my own private use, along with a fair amount of HTML/XHTML. After taking a couple of continuing ed. programming classes and trying to bull my way through a few books, I have hit upon a method that I think is worth exploring for any beginning programmer. This method is advocated by Eric S.Raymond and is detailed in his "How to be a Hacker FAQ". He states that most, if not all, of the best programmers/hackers are self-taught and that reading books and taking classes is not the way to become a skilled programmer. He proposes that the way to become more proficient is by doing, by (1. reading code) and (2. writing code). So, according to ESR, the way it works best is to read through some well written programs in whatever language you are interested in, then write a few things on your own. Read a bunch more, then write a little more.Read more, then write a little more and keep repeating this process until the things you are writing begin to resemble the programs you are reading, in structure and clarity. Keep in mind that he states that this process from beginner to capable novice programmer could take anywhere from 1 to 2 years depending on the language you choose (Python is recommended as a first language, it is fairly simple, yet very powerful).
Anyway, this is the method I am using now and if anyone else decides to give this method a try, and it helps them become proficient at programming, I will be happy that I was able to help someone else

jhiggs
August 23rd, 2005, 04:45 AM
Started at high-school playing with .bat files then move on to "prolog" then to pascal, assembly, ,cobol, c, c++ and some visual basic.

invisage01
August 23rd, 2005, 06:20 AM
1. Basic Pascal through school
2. Played with HTML and stuff at a basic level
3. Basic Java + ASP at uni
4. Dated a girl who's father runs a software company..
5. Got job with father after break up
6. Writing code and still constantly learning! (usually from making mistakes!!!)

liquidfire
August 26th, 2005, 11:22 PM
I myself want to learn some programming.
Mostly I wan't to learn about programming application and 3d software(i.e games)
but do I need good math sense for programming? Some say so some say not because that isn't my strongest point. :-|

And besides I really want to learn some basic stuff first, i've tried c++ but that was too difficult for me at the moment because I don't understand what each command does and how to give instructions to a command.

Therefor if anybody knows a language with a low-level requirement and a high userbase plus super support. Please say it too me ;)

wtd
August 27th, 2005, 04:30 AM
Therefor if anybody knows a language with a low-level requirement and a high userbase plus super support. Please say it too me ;)

Ruby and Python are both good ways to start out.

invisage01
August 29th, 2005, 02:17 AM
but do I need good math sense for programming? Some say so some say not because that isn't my strongest point. :-|


I think more LOGIC sense is required than maths sense and logic is an integral part of maths - so i think they sort of go hand in hand. So although maths may not be your strongest point (this is also the case with me) the logical way of thinking is what helps when programming.

Iain.

abiezerm
August 29th, 2005, 11:12 PM
I think more LOGIC sense is required than maths sense and logic is an integral part of maths - so i think they sort of go hand in hand. So although maths may not be your strongest point (this is also the case with me) the logical way of thinking is what helps when programming.

Iain.


i agree!!! in the programing world LOGIC is the most important thing,
if u have LOGIC u can write code in every language.

Parkaboy
September 3rd, 2005, 02:23 AM
I was taught mainly VB.NET at university

I wanna lear Perl and Python with some guides I have downloaded

Webchief
September 8th, 2005, 10:30 PM
Many of the posts on this thread are not particularly helpful; quibbling about various language features, and not helping the original poster because he didn't say why he wanted to learn. I hope this doesn't put novices off reading as far as this post.

If you are just starting out learning programming for its own sake, I would recommend the following.

Start with An Introduction to Programming in Emacs Lisp (http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/index.html). This is a very gentle introduction to programming which is written for non-programmers. Although Emacs Lisp is a language with a very narrow focus, I still recommend this book because of how well it covers essential programming concepts such as functions, data structures and flow control. As a bonus, by the time you finish this book, you will know about Regular Expressions, and how to extend your text editor with your own personal customisations.

After you finish the emacs-lisp-intro, move on to learning Python. You will see that Python looks different to Emacs Lisp, but the basic concepts (flow control) etc, are the same. I haven't evaluated a Python textbook so I don't know what to suggest here. How to Think Like a Computer Scientist: Learning with Python (http://www.ibiblio.org/obp/thinkCSpy/) is supposed to be very good.

By the time you have finished the Emacs Lisp textbook and a Python textbook, you are probably in a position to figure out where to go next on your own. For future study I would recommend The Structure and Interpretation of Computer Programs (http://mitpress.mit.edu/sicp/) (SICP). This is a terribly under-appreciated textbook; in my mind it ranks alongside "The Art of Computer Programing" as one of the essential texts on programming. It has the virtue of being shorter and easier to follow than TAoCP. SICP will make you aware of many programming techniques which are rarely used (or even heard of!) by most programmers.

If you can get through all the above, picking up other languages and reading other people's code will not seem particularly difficult. More importantly, by this stage you will have the vocabulary and the confidence to discuss things you don't understand with other programmers.

Thanks for those links, so far they've been very helpful.
I'm trying to program for the use of network scripts and the like. Eventually move into full blown network programs like hydra and bittorrent. I think this would be a good place to start, but then again i'm quite the noob when it comes down the programming and Ubuntu :-P
Any suggestions on languages and network programming? Also if you'd be so nice to include a link to a recomended API for the respected language.

fakie_flip
September 15th, 2005, 10:27 PM
I use windows (my copy of ubuntu is on its way) and i have NEVER tryed programing before.

Can you give me some basic tips?????](*,)

For anyone who wants really wants to be a programmer has to read. Most people will not do this because they are too lazy to put forth enough effort. So for programming, you have to be willing to read, but not just read, practice what you read to and ask questions. I suggest you start off by getting a compiler to work first and learning how to use it by compiling example code like Helloworld. Do not start with Visual Basic. That is for Windows anyways, and it teaches bad habits. Most college and universities are starting their students off with Java. That is not the same as javascript. Java is good for many reasons. Most people want Java today who are hiring. Java is high level, object oriented, and a modern language that does not get so boring to read. Also lots good support is available for Java and the same compiled software will run on many platforms(Linux, Windows, Mac, Unix, ect.). Check out JDK 5.0 at www.java.sun.com

geekchic9
September 16th, 2005, 04:39 AM
I've read 15 pages of recommendations, and no one has provided a link to ESR's "How to Become a Hacker." Laugh if you will, but despite ESR's opinion that "true" hackers seem to be all just like him, you can still learn some useful advice in his "Learn How to Program" section:

http://www.catb.org/~esr/faqs/hacker-howto.html#skills1

If you don't have time to read the entire section, here are the highlights. Learn these languages in the following order:

1) Python: the syntax is very simple, yet the language is powerful
2) Java: only use the open source/free implementations of it
3) C/C++: because this is the core language of Unix
4) Perl: Excellent for active web pages and system administration
5) Lisp: Once you get it, you'll be a better programmer for the rest of your days

The best way to learn how to program is not by taking courses, or reading books, although that would help. The best way is by reading others' code and writing your own.

The only thing I would add to ESR's advice is to learn assembly code. Some people start with that first, others last. Whatever you do, learn the basics of how a computer works before you start programming. Remember: A computer is stupid: It only does exactly what you tell it to do!

Hope that helps. Good luck,

Morgan

Arto
September 16th, 2005, 05:19 AM
Eric S. Raymond is definitely relevant reading. The "How to Become a Hacker" can't be mentioned, though, without Paul Graham's essay on Great Hackers (http://paulgraham.com/gh.html) ;)

ESR's document together with Paul Graham's other writings (http://paulgraham.com/articles.html) got me curious enough to learn Lisp (http://www.gigamonkeys.com/book/) (and Scheme) not too long ago, an experience that was every bit as enlightening as they claim it to be.

ESR's essay doesn't adequately reflect one newer development in the programming world, though: it's been mentioned many times on this thread by now, and it's called Ruby (http://www.rubycentral.com/book/). Ruby combines enough of the good sides of Python and Perl, not to mention good ideas derived from Lisp and Smalltalk, to make learning Python and Perl a lot less important. I used to use Python a lot, but have hardly touched it since I got acquainted with Ruby. As for Perl, well, let's not go there ;)

Lord Illidan
September 16th, 2005, 10:07 AM
I learned programming through Pascal.

I know it is old and all that. But it is really good for teaching stuctured programming techniques.
Now I am learning c, and after that, I will start C++..

Python and Perl I am leaving for next summer..

However, I have a question.. which is the fastest and best language for open gl apps?

Arto
September 16th, 2005, 10:22 AM
However, I have a question.. which is the fastest and best language for open gl apps?

Fastest and best don't go hand in hand ;) Fastest is, obviously, assembly language :D ...with C/C++ the next down the ladder. Those languages are "close to the metal" and will give you the utmost performance.

But if you want to actually be productive (what I'd define as a "good" thing) you should consider a higher-level language, whatever that might be; for starters, read this entire thread, there's some discussion about OpenGL in there ;)

Jackster
September 25th, 2005, 12:35 AM
I first started with a language called OPL, Organiser Programming Language, on a pocket computer called Psion 5, they were actually really cool, I'd choose a Psion over a Windows CE device anyday

But back on topic, for beginners, I'd say Python, it's the first language (excluding HTML, of course :wink: ) I learned on a proper desktop computer. Actually, I've just started learning it, and it's a lot simpler for a beginner than a lot of other languages.

www.python.org

Flashes of Sky
September 25th, 2005, 06:51 AM
Ok. I have just bought the Teach yourself C++ in 21 days (Not that I am going to learn such a lang in 3 weeks :)

My question. I cannot even get the Hello world to run. I am on Ubuntu 4.10 - still waiting 4 5.04 cd. I have checked what compilers I have and it says gcc. I have tried many options but the only reslt I get is a text file for hello which I tried to compile from hello.ccp.

Sorry if this is in the wrong forum or if the question sound stupid but I am a newb

Thanks
Preacher

That's a good book, yet it's Windows centric and it uses non-standard code, a better tuitorial is http://www.isotton.com/lcpp.html

It's not finished, yet it really helps, and you can get the more advanced info from other rescorces.

Unit #134679
September 29th, 2005, 03:27 PM
I learned in my high school. The first class I took was Visual Basics. I was suppose to take C++, but since the class was cancelled, I'm takin Java now. Actually, I'm in my Java class right now :D

jeffreyvergara.NET
September 29th, 2005, 07:50 PM
I used Turbo C and Visual Fox Pro before... school requirement.. Y_Y, im also taking up Visual Basic. im interested in making Window$ apps before but not anymore, im begginning to have interest on python and php, actually I learned HTML programming using WYSIWYG editors including Dreamweaver MX. I can't make DMX6 to work using Cedega & Crossover office so I think I'll be focusing on PHP because im also a web programmer wannabee... lol, I'll try to make now my own website in PHP without using WYSIWYG editors...

anyways, what php program do you suggest for a total beginner?

Unit #134679
September 29th, 2005, 09:05 PM
I used Turbo C and Visual Fox Pro before... school requirement.. Y_Y, im also taking up Visual Basic. im interested in making Window$ apps before but not anymore, im begginning to have interest on python and php, actually I learned HTML programming using WYSIWYG editors including Dreamweaver MX. I can't make DMX6 to work using Cedega & Crossover office so I think I'll be focusing on PHP because im also a web programmer wannabee... lol, I'll try to make now my own website in PHP without using WYSIWYG editors...
anyways, what php program do you suggest for a total beginner?

I was the same way too. I wanted to learn how to make Windoze apps, but I dont care anymore. I forgot to mention that I learned HTML and a bit of CSS too. I have no idea whats good for PHP...The only app for PHP I know of is like Cold Fusion, but I dont know how good it is

jeffreyvergara.NET
September 30th, 2005, 05:54 AM
im still thinking about continuing HTML programming and learn some CSS or just start PHP... if only dreamweaver mx 6 works with linux... hehehe..

Unit #134679
September 30th, 2005, 02:35 PM
im still thinking about continuing HTML programming and learn some CSS or just start PHP... if only dreamweaver mx 6 works with linux... hehehe..
I tried Dreamweaver MX 6...I ddint like it

dtfinch
October 1st, 2005, 03:18 AM
I started learning basic on a PCjr that was as old as I was. Later QBasic and a little bit of assembly. For the first 5 years I was entirely self taught. My first real programming class was in Pascal, which was really great. Learned VB and javascript on my own. Took C, Visual C++, and Java classes before graduating from high school. I took almost every CS and CIS class offered at my local university, far more than necessary. There I learned very few new languages (.Net, C#, bit of perl), but it was informative nonetheless (higher level stuff). At the same time I took some part time and summer programming jobs where I learned quite a bit, but almost entirely in the area of asp web development. I got to spend a couple weeks playing with php, but then my project was cancelled. I've learned a lot of lesser languages not worth mentioning. I'd like to learn python, but haven't gotten around to it yet.

jeffreyvergara.NET
October 1st, 2005, 03:36 AM
I tried Dreamweaver MX 6...I ddint like it
did you able to run it on Ubuntu?
I like DMX not really version 6 but the 2004, this program does have all the things I need in website development, especially the site upload feature (which in NVU, really gives me a head ache). I just heard the DMX6 works in Wine,Cedega or Crossover office, but it seems I can't make it to work.. :(

naugiedoggie
October 2nd, 2005, 01:42 PM
Heh, that goes back ... I guess my first real programming was Basic on a TI99A, with data storage on a portable cassette player and an old black-and-white TV for a monitor. Wrote a program to solve quadratic equations for a math class. Fast forward to a Commodore 64 and a couple more programs in basic, one to compute weekly ratings updates for the chess club to which I belonged at the time.

But, that didn't really teach me to program, though it did give me a taste for it. First conscious attempts to "learn to program" were in C with a "Teach Yourself C" book. Pretty much a failure, as I was scared off by the repeated warnings that I could hose my system if I screwed up one of my programs -- I remain one of those people who will screw something up if given the chance.

Then I went to linux. Started programming in the bash shell. A checkbook program, and a program to compute my take-home pay based on hours worked. Took a class in C++, it bored me. Took up C again, with more success this time. That's where I "learned to program."

My recommendations:

C is the mother tongue. For a modest investment in the Kernighan & Ritchie book The C Programming Language, you can learn the entire language in a very short time. All the tools you need to work in the language are free, readily available and easy to learn, as well. If you want something a bit thicker, Steven Prata's C Primer Plus is excellent also, and there probably are others, as well. Most modern languages derive from C, so if you know it, you have a leg up on just about everything else.

Java is not a difficult language to learn (esp. if you know C) but I think there is just too much of it for a beginner. I think I read somewhere that there are 4500 classes in the Java Development Kit. Start with something simpler. ;-)

Perl is a language easy to learn and hard to master. If you just want to churn something out immediately, you almost can't do better than perl. And it boasts absolutely the best self-tutoring programming book, Randal Schwartz's Learning Perl, which is the standard beside which all "teach-yourself-programming" books should be judged. Perl is a bad first language, however, because it will not enforce any kinds of programming best practices. The result is likely to be, a novice will wind up with all kinds of bad habits.

Python is overrated. I don't know why, but almost every language I have tried is easier to learn than python. The only languages I use with regularity are Java and perl, but I've written command line applications in C#, DLLs in VB 6, web sites in .NET, Javascript and perl CGI -- and never been able to do anything really useful in python. And it's not for lack of trying, either. One of the first programming books I bought was Guido's Internet Programming in Python. Oh, well. I guess the moral should be, if python doesn't ring your bell, don't give up on programming. Go to a different language first.

Finally, if you want to make a career in programming, The Pragmatic Programmer (http://www.pragmaticprogrammer.com) series is excellent.

mp

wildgift
October 2nd, 2005, 09:35 PM
Great post Naugie. I pretty much agree 100%.

I learned to program BASIC on the old Ataris. It came with a book, but I got another book that had more information. Then, from there, we got an assembly programming book and learned that.

If I were starting out today, with nothing, I'd probably start with JavaScript. It's a pretty simple language, but extremely OO, and it even has a lot of sophisticated features, so you can employ cool abstracions early in your self-education. The more I use it, the more I like it.

What's really great about Javascript is that it's immediate. You edit, reload, and view the results. You get simple graphics, which you can't say for Perl or Python. You can even put the results on a server, and you have some "client-server computing". The penalty for screwing up is that you have to kill your browser.

Then, from JavaScript, you can easily segue into Perl or PHP. A lot of the foundation concepts (URIs, serialization, POST) are the same. I'd opt for Perl, because it has more sophisticated features. It's also a popular system scripting language with great Windows support, so you can make some useful tools for yourself.

Then, after that, it's wide open. Just get the C books, or head down the Java or .NET paths. Whatever. By that point, learning a more uptight (typed) language will be a lot easier. Once you know a couple procedural languages, they're all variations on a theme.

wildgift
October 2nd, 2005, 09:41 PM
Thanks for those links, so far they've been very helpful.
I'm trying to program for the use of network scripts and the like. Eventually move into full blown network programs like hydra and bittorrent. I think this would be a good place to start, but then again i'm quite the noob when it comes down the programming and Ubuntu :-P
Any suggestions on languages and network programming? Also if you'd be so nice to include a link to a recomended API for the respected language.

I'm a Perl bigot. Perl's great for network programming. You have a lot of libraries that keep things at a high level, but, there's also a lot of code out there that takes you down to a slightly lower level.

Java's good too. It's got nice classes that do pretty much all you want over IP. Best of all, it's all standard, so if the user has Java, you're ready to go.

And, obviously, there's a lot of Python bittorrent code to study. Just open up that file and start parsing the code yourself.

wildgift
October 2nd, 2005, 09:51 PM
Eric S. Raymond is definitely relevant reading. The "How to Become a Hacker" can't be mentioned, though, without Paul Graham's essay on Great Hackers (http://paulgraham.com/gh.html) ;)
ESR's document together with Paul Graham's other writings (http://paulgraham.com/articles.html) got me curious enough to learn Lisp (http://www.gigamonkeys.com/book/) (and Scheme) not too long ago, an experience that was every bit as enlightening as they claim it to be.
ESR's essay doesn't adequately reflect one newer development in the programming world, though: it's been mentioned many times on this thread by now, and it's called Ruby (http://www.rubycentral.com/book/). Ruby combines enough of the good sides of Python and Perl, not to mention good ideas derived from Lisp and Smalltalk, to make learning Python and Perl a lot less important. I used to use Python a lot, but have hardly touched it since I got acquainted with Ruby. As for Perl, well, let's not go there ;)

There's a popular book called The Structure and Interpretation of Computer Programs. It's selling used for around $5 online. (And new for around $90!) It's the main computer science book in America, and it's a good, if somewhat dry, intro to Scheme, a lisp-like language.

Some others recommend The Little Schemer.

While Ruby has some Lisp ideas, don't discount Perl, which also has these very same ideas down in its guts. Mark Jason Dominus recently wrote a book about this.

Also, on a somewhat unrelated tangent... I'm starting to learn SQL, and relational databases generally, and it's pretty awesome. I used to dis databases, but, this was misguided foolishness. Relational databases are very interesting systems, and I was a fool for ignoring them.

era86
October 4th, 2005, 05:59 PM
My recommendations:
C is the mother tongue. For a modest investment in the Kernighan & Ritchie book The C Programming Language, you can learn the entire language in a very short time. All the tools you need to work in the language are free, readily available and easy to learn, as well. If you want something a bit thicker, Steven Prata's C Primer Plus is excellent also, and there probably are others, as well. Most modern languages derive from C, so if you know it, you have a leg up on just about everything else.


I agree. Learn C. And that book is really well written. I used it in my first year of college (which was last year!) and it pretty much saved my grade considering my failure to understand what my teacher was saying (foreign accent). C is a good place to start learning the procedural aspects of software development. If you want to get into the object oriented world (Java, C++) C is where it starts. Read up, test code, get seg faults (and other errors), and learn from all of them.

I began my programming in Basic when I was 14 on my dad's Windoze 98 machine. I pretty much stuck to simple stuff like HTML and CSS until I hit college. That's where I learned the power of C. Now I love programming in C++ and I am also learning a bit of Java as well. I really want to get into web design so I'm teaching myself Flash and Javascript as well.

Basically just learn syntax, learn how to develop algorithms, and write code.

Arto
October 5th, 2005, 05:13 AM
There's a popular book called The Structure and Interpretation of Computer Programs. It's selling used for around $5 online. (And new for around $90!) It's the main computer science book in America, and it's a good, if somewhat dry, intro to Scheme, a lisp-like language.

The Wizard Book is also freely available online (http://mitpress.mit.edu/sicp/) straight from the source, MIT ;) For anyone serious about teaching themselves more advanced programming paradigms, it doesn't get much better than this.

Rodrigo
October 7th, 2005, 05:07 PM
Im gonna get out of place a little here ... hehe

I got my primal urge to program (belive it or not) with the "rpg toolkit", yeah, you read it right :rolleyes: . But then I realize (I was like 16 or 17 years old) that it was just a weird script. And then I wanted to learn REAL programing... I learn a little of C and HTML ( kind of lost huh :confused: ), I learn VB mixed up with DirectX, and after a while, I end up with C++ and Delphi (my main two loves) mixed up too with OpenGL.

To be more specific I learn to program downloading source code from Planet-Source-Code and reading other people source code (since where I live they dont even mind to bring programing books and aint to many people to teach you).

And recently I just begun to learn Python (for programing using OpenSource Tools), and checking out Glade.

And thats my 3-4 years programing journey :p

iAlta
October 12th, 2005, 12:04 AM
I am like joedaman. I would like to be a programer. I have a few questions.
HOW do you program? I know you wright codes, but WHERE do you wright codes?

After reading this thread, I am proably going to the lib. or web to learn phyton. But nxt week, we are gonna make a website in my school, so does anyone know a mini-online-course in a good-for-for-web language? Thouge I don't think we will be learning any promgram langs.

Wide
October 12th, 2005, 12:25 AM
I never really learned, it just keeps evolving:rolleyes:

Drakx
October 12th, 2005, 08:10 AM
I am like joedaman. I would like to be a programer. I have a few questions.
HOW do you program? I know you wright codes, but WHERE do you wright codes?



Open a text editor and write what you know, test, test, test, if was to write hello world in a terminal i would do this

C:



#include <stdio.h>

int main()

{

printf("Hello World\n");
return(0);
}


or python




print "Hello World"

iAlta
October 12th, 2005, 11:12 AM
Do you just wright in a text editor? I would never geuss that.
And how about fullflegd programs are they also in a texteditor?

Drakx
October 12th, 2005, 11:51 AM
Yes if you want, but i find an ide or some thing to them effects usally works just as well, what language would you like to learn ? the best was is to choose a language give it a go if you dont like it you have not lost any thing you just gained experiance, im @ collage learning VB (while vb is no good on Linux, I'll use Realbasic) im not keen on vb my goal is C so while im learning VB @ collage @ home i use a book called C for Dummies i found most things like if statments are more or less the same so i can use what ive learned from vb in C (granted i will have to make small mods but thats life), i think you'll find that it will happen to yourself (or most of the guys who know how to code). Like i said choose a language play, test and test if you dont like it choose another.

Note:

While im at collage learning VB, im not im there for the qualification.

I learned Python, vb but im not happy with Python, vb i like and always will but i want to learn C.

iAlta
October 12th, 2005, 12:47 PM
OK, I tryd to type thoese sodes in a text editor, it doesn't do ****!!!

I'd like to learn Phyton or php.

Drakx
October 12th, 2005, 12:52 PM
LoL

you'll find that they do!!, the C hello world call it hello.c then from a terminal

$gcc -o hello hello.c

then run it ./hello

and the other hello.py

iAlta
October 12th, 2005, 01:34 PM
Now, what do you mean?

How can I see if the programs acctualy work?

Do I need anything to get it to work?

Are you sure I just have to writh it in the Text Editor? If yes, can I then writh it in OpenOffice Word porcceser?


I can see there is a bottun thet sais php here, what does it do?

And a <> bonntom

And a #

Drakx
October 12th, 2005, 01:37 PM
I have told you all you need to know

iAlta
October 12th, 2005, 01:51 PM
Am I ready to face the world???

iAlta
October 12th, 2005, 02:14 PM
Ahh... I think I get it now!

Drakx
October 12th, 2005, 03:34 PM
Go download this small video i just made.

http://www.ixl2.net/hello.tar.gz

if that dont work try this

http://ixl2.net/hello.tar.gz

Let me know so i can delete it after.

iAlta
October 12th, 2005, 04:18 PM
I have doawnloaded them now. I may not know how to use them, but I haven't tyied yet.

Drakx
October 12th, 2005, 04:23 PM
no afence but if your a linux n00b and still have windows installed copy that video to a windows drive and watch it thats assuming you dont have a video player installed.

iAlta
October 12th, 2005, 04:33 PM
dont delet yet

iAlta
October 12th, 2005, 04:41 PM
I don't have a vidio player installd yet(I acctualy was going to install it today http://ubuntuforums.org/showthread.php?t=74657 ), I am a n00b, and a win would be great, not that I have it installd on my PC, but it is installd on the only weblinkd PC in the house(the one I am on now).

iAlta
October 12th, 2005, 04:45 PM
OK, now you can download them. They are now on seperat folders.

Sirin
October 12th, 2005, 04:53 PM
but at least the Javascript part of that is actually programming.


Funny, I thought JavaScript was a scripting language and not a programming language? :confused:

Arto
October 12th, 2005, 05:27 PM
Funny, I thought JavaScript was a scripting language and not a programming language? :confused:

There is no conflict between being a scripting language and being a programming language ;) By definition, being a scripting language makes it a programming language as well (unless someone can provide some really clever counter-example).

For example, Perl, Python and Ruby are also interpreted scripting languages, like JavaScript. In contrast, C and C++ are compiled languages (meaning they are compiled into native binary-form machine code for execution, instead of being interpreted on-the-fly). Some languages like Visual Basic fulfill both definitions, that is, are both scripting languages and have a possibility to be compiled into binaries. All the above are still programming languages.

iAlta & Drakx: perhaps move the tutorial discussion into its own thread? This one is pretty long as it is :rolleyes:

mostwanted
October 12th, 2005, 05:54 PM
No offence iAlta but maybe you should brush up a little on your English...? ;) Just a little advice, I noticed a lot of spelling mistakes in your posts (not grammar mistakes) and those tend to be easy to correct if you make a little effort before you click on the "post" button.

Og der er også noget andet: forstår du Dansk? :) En lille hilsen fra landet nedenunder.

iAlta
October 12th, 2005, 06:01 PM
Why does everyone have something against my English?? I know I'm not the best speller, but I got 11 in verbal English. And Most of what I wright is not with a keyboard!!!!

aneeshm
October 16th, 2005, 04:54 PM
If you want to start with the fundamentals of computing and programming , I can recommend the book ( freely available online ( download the PDF version ) (http://www.cs.cmu.edu/~dst/LispBook/) ) "A gentle introduction to symbolic computing" . It uses Lisp , which I think is absolutely great for learning . After learning Lisp , you will not acquire bad programming habits even if you spend the rest of your life coding in some other language .



As for how I started out - with BASIC . Then I went on to C++ .

SeanCallan
October 18th, 2005, 09:35 PM
I started my career by learning HTML and CSS on my own. I moved to VB there after for it's RAD abilities. VB taught me some basic of "program flow". I then went on to C++ where I learned to develop bigger better applications, but without the pretty GUI.

C++ was really my base for awhile, from there I learned PHP for web development and recently Ruby.

C++ really taught me all I needed about data structures, OOD and program design. With my extensive knowledge in C++ it made learning JAVA, PHP, etc a breeze.

I found a lot of the information I wanted from Google to be honest. I'd jump on there and just type "C++ Tutorials" and start reading through them, if something sparked my interest in one but wasn't explained in detail "C++ [interesting thing]".

There are a lot of good books out there for every language but you may find, as I do, web tutorials are easier to understand. Just try Googling a bit and see what you turn up.

clayasaurus
October 20th, 2005, 02:27 AM
After playing a computer game and learning about this thing called 'source code' and that you could make games with it, I bought myself the book 'C Primper Plus' by Steven Prata, and read whole thing doing the chapter examples along the way.

Once you learn C, you know the basic layout for all C-based programming languages.

johnnymac
October 20th, 2005, 05:36 AM
I went to school....paid a lot of money....to learn that what they teach you in school isn't how you really do it : )

But...the piece of paper says I can code...so I code : )

I started off learning C++ and then jumped to Java. My first job was writing a client-server based app using Java but I quickly moved into web-based development with PHP, JSP, and ColdFusion. Now....I do customer OS and device driver development using C and scripting with Perl....lots and lots of perl

ctcecil
October 24th, 2005, 10:04 PM
HTML ;)

then eventually into PHP, then using MySQL

then C, C++, Java, and have tried out many others.

I use PHP and C everyday I'm on a computer, and I love expanding my knowledge in java.

Buy a book!

chadr6
October 27th, 2005, 04:38 AM
I like either Java or Python as a starting language if you just want to learn general programming techniques. Java will really help you to understand object oriented programming.

ofek
October 29th, 2005, 12:48 AM
I learned to program from online books, tons of em and still do.
as a matter of fact im reading right now "Dive into python", great book great language but not for learning to program.

impeteperry
October 30th, 2005, 05:10 PM
I started in 1970 on an Olivetti programmable calculator 101.to translate feet & inches into a production code. I used the manual.

Middle 70's on an HP9830 in "Dartmouth Basic" for additional extension of the produceion code. Again the manual.

In 1980 I bough an Olivetti M20 running PCOS. Programmed in Assembler and Basic. The manual again.

Middle 80's bought Olivetti M24 running both PCOS and DOS. In DOS wroted drivers for printing graphics an both an Okidata 83 and a IBM dot matrix printer in Assembler. Translated my program from PCOS to DOS using both Assembler and Basic. ( A nightmare as PCOS was far superior to DOS. ). Still from manuals.

Early 90's bought a new Dell computer running ME95. Rewrote DOS program for windows in c and later in c++ using a Borland compiler, bought some reference books.
Also became a "developer" for MicroStation and wrote several application for them in their MDL language. (Their manuals were execellent.)

2000 bough a ME box and started programming in c++ & Visual Basic.

2003 got bitten by the Linux bug. Strarted with RH6.0, then Storm 2000, Debian, back to RH 7.3 then Fedora true Core 3.
Trying to learn Qt and Qt-designer to this date from books and distro manuals and a great deal of help from the various forums.

Frustrated with Ferora Core 4 problems, I started looking around for another Distro and found Ubuntu. Now able to proceed with programming using Qt as the base then loading into Kdevelop. Great manuals and tremendous forum support. The UbuntuGuide is absolutly the best document of its kind I've found.

Incidently, I found that installing Ubuntu and
adding KDE functions was much more satisfactory then loading Kubuntu directly.

I hope I have not straid too far off the thrust of this thread.

wilford
November 10th, 2005, 03:23 AM
Actually, i'm in school right now. Andthe first thing we studied was C. It's the most basic programming language. Then i'm now in JAva. It's better than C but i don't regret studying C because if you go straight to the advance programming languages without basic foundation, it's gonna be a little tough :D

Happy Programming :D

fakie_flip
November 11th, 2005, 04:17 PM
Actually, i'm in school right now. Andthe first thing we studied was C. It's the most basic programming language. Then i'm now in JAva. It's better than C but i don't regret studying C because if you go straight to the advance programming languages without basic foundation, it's gonna be a little tough :D

Happy Programming :D

You can get the basic foundation from any langauge. My college teaches me java first then C later on, but we have not got to that. It is good to know C because it is low level compared to java that is high level and will run on almost anything. I want to learn Lisp. I will at school eventually. The person who wants to learn programming has to be willing to read. He or she can't be lazy and be good at it.

Arto
November 11th, 2005, 04:27 PM
I want to learn Lisp. I will at school eventually. The person who wants to learn programming has to be willing to read. He or she can't be lazy and be good at it.

I highly recommend Peter Seibel's Practical Common Lisp (http://www.gigamonkeys.com/book/) for learning Lisp :cool: It's very comprehensible and modern: instead of the more academic subjects Lisp has traditionally been used for, the book guides you through writing an MP3 parser and database, a shoutcast server and a Bayesian spam filter.

xbaez
November 11th, 2005, 04:50 PM
Deitel & Deitel are great books

I usually like to buy some books, I don't follow all the examples, but I understand all the concepts good instead of just trying to figure out the code.

I know how to program in: c++, javascript, php+mysql, java and a bit of bash

The language that I really know is php, because I bought a book and read it all. Java I have a 1000+ pages book (Java: HowTo Program) which is fantastic, and I'm starting to understand it and like it. For the rest of the languages I've read some stuff, but not entire books, that is why I just know the basics.

So buying a book will be the only way to master a language, and then grab a nice IDE. For example, for PHP: Eclipse+php plugin, Dreamweaver MX and for Java: Eclipse, Netbeans

vgeddes
November 12th, 2005, 02:21 PM
Can someone please explain to me the current hype around C#, Managed Code, and whatever - and more importantly, why any FOSS developer would want to use technologies that have emanated from Microsoft's dark steaming dungeons:).

I now hear the Mono Project (constituted by some leading Gnome developers) are now advocating using GTK# as the default toolkit. This is worrying, what does this all mean.

kanenas.net
November 13th, 2005, 06:54 PM
The first thing I wanted to do, was to use the WEB so I started with HTML, then read php and ASP. Now I am trying JAVA and Python for mobile programming in my P900 Sony Ericsson !

tbrownaw
November 13th, 2005, 09:32 PM
Can someone please explain to me the current hype around C#, Managed Code, and whatever - and more importantly, why any FOSS developer would want to use technologies that have emanated from Microsoft's dark steaming dungeons:).
I think most of the hype is because forgetting a delete doesn't neccessarily cause a memory leak (but you can still cause these by things like forgetting to remove items from long-lived (or even global!) containers). Of course, the way this is implemented takes away destructors and makes managing resources *other* than memory a wee bit difficult.

The real use is that when there aren't any pointers the VM can rearrange things in memory to reduce fragmentation or recompile on-the-fly with different optimizations, but I don't see this talked about as much.

saphil
November 14th, 2005, 09:13 PM
Lots and Lots and Lots of people are giving you good advice, which I am going to take some of for myself. Excellent question to ask here.

I have a caveat that I wish I had heard about 10 years ago.
"Choose a language to do the type of thing you want to do, and learn it to at least an intermediate level. Do not attempt to learn 7 languages at once (especially on your own) as you may take more than 10 years to get any of them figured out."

This was my experience. I started learning basic and was so unenthused that I gave it up for 7 years until apple and MS came out with gui environments that were within my reach monitarily. I started then to look at HTML and Javascript, then Java then VC++ then VBasic. I started working in the corps of engineers and learned some Foxpro and VFoxpro database stuff. I was told about 20 times that I should dump my coding experiments for some solid sql code (advice I ignored, being invested in learning Java) In recent years I have looked at a bunch of languages, so many that "Hello world" makes me want to vomit. Most of what I do code is derivative, or tweaks of somebody else's stuff to make it do what I want it to do (or my employer wanted).

I am now to the point that I will probably have to start teaching in a language to learn it in any organized way.

Vegettex
November 14th, 2005, 11:20 PM
Well, how did I learn to program...mostly just by trying "what will happen if I type this...?", I am not fully professional yet, still working on it ;), but now I know "web-languages" such as html, css, php, sql and high programming languages (java and c++) and low programming languages (c and assembler)

Currently I am working with java and asm for a project.

hacker be
November 23rd, 2005, 09:25 PM
I use windows (my copy of ubuntu is on its way) and i have NEVER tryed programing before.

Can you give me some basic tips?????](*,)
hi ! I think You need begin with C/C++ .:D

JPatrick
November 25th, 2005, 10:41 PM
I started with C++ by reading a books on it on the net. Then I started learning Ruby, had some nice things, but I didn't quite like it because I didn't find a lot of docs on it, so I took up Python instead and I love it!

otake-tux
November 28th, 2005, 05:34 AM
I'm still an Information Science student so I'm no expert. The way I started was with C++. I learned a lot of it. I did everything from Stack data structures to bynary trees in C++ with templates and all. It was hard but it payed off cause now every laguage seems easier.

Anyway, then I thought myself the basics of python. Then I did data structures in C. And now I just finished teaching myself some basic stuff about java. I'm thinking about getting familiar with Assembly for the x86 architecture but next semeste I'm taking a COBOL course so that may not happen.

My point is, by learning C++ I have been able to teach myself other languages. I doubt I would have been able to do the same had I started with python.

adduds
November 29th, 2005, 09:52 AM
I started w/ HTML when i was in like grade 8, then moved on to Java Script later on and some style scripting. In high school i took VB and C++, now i'm in university taking Java, and hopefully start some bash and python scripting soon

ewtesterman@cox.net
December 2nd, 2005, 06:28 PM
I started programming in BASIC on a Tandy TRS 80 when I was about 8, I continued in BASIC and QWBASIC until I got into High School then I learned Turbo Pascal. My problem is that was about 15 years ago, and I would like to get started again. I am primarily interested in being able to build drivers and manipulate the parallel port. I have worked in industrial maintenance for the last 6 years and I enjoy automation. I can program PLC's and have a very solid understanding of relay logic. So I will continue to search forms and and Wiki's, but I would really like it if someone could direct me to a good language for these tasks in Linux.

CPUFreak91
December 6th, 2005, 02:16 AM
I started off with python in feb this year and am already picking up java and a little bit of C

I started QBASIC around july 2004 and have regretted it ever since but it gave me a jump start

CPUFreak91
December 6th, 2005, 02:19 AM
<removed>
stupid me...

gord
December 6th, 2005, 02:26 AM
ubuntu loves python, the default install is python with a hell of a lot of other python stuff that expands what it can do, tis a nice platform to use it on.

commodore
December 6th, 2005, 03:19 PM
As you can read from Mark Shuttleworth's homepage, he likes python very much.

IMO Ubuntu should have other great languages installed too like ruby and java. I don't care about the apps so much so I would make some room from them.

jkerian
December 17th, 2005, 06:07 AM
For programming books, this is a godsend: http://safari.oreilly.com . I highly encourage programmers to give it a try. I'm currently using it to brush up on some details of STL.

Just to add one more post to this fairly impressive thread:
If you want to do games (graphics heavy):
C, Java or C++ (C or Java with the idea of moving to C++ after about 6 months)
Website or server management:
Python, PHP, Perl, SQL, HTML/XHTML, JavaScript, shell scripting, ruby
If you want to participate in the open source community:
C(most things), C++(KDE), Perl(most install systems), shell scripting(everything), Python (ubuntu)
Scientific Computing/Engineering:
C, MathLab, at least one major CAD package, Fortran, LabView's "G", Perl/Ruby is a maybe
Other languages for special purposes:
Lisp, Forth, Scheme, Basic (of various flavors), XML, Tcl

Those are the ones that I know, and the purposes I put them to. This will hopefully give you a bit more perspective on why there is so much conflicting advice on first languages. You basically need to use whatever is appropriate to your particular problem. Each of these categories also needs specialization for each purpose. Plain C/C++ is freaking impossible to write games with, but you have to know C/C++ in order to use the OpenGL and DirectX libraries. (a bit of an overstatement... but not too much of one)

--joe

DaMaster_Architect
December 26th, 2005, 11:26 AM
when I tried to learn C++ for game programming, I bought the books C++ for dummies and windows game programming for dummies. They are really a must for C++ programming. The books are easy to read, very understandable, and everything is explained in human words, not in weird terms. These books made me learn c++ really quickly.

viscount
December 26th, 2005, 11:20 PM
I learned to program by reading this thread.

haha, jk, but it had to be said by someone..
cheers, nice to hear your stories.

Jungles
December 27th, 2005, 12:11 AM
I learned Pascal in high school, then spent 70% of my time at university using Java, and taught myself C for embedded projects.

At work, I taught myself a bit of C# for the .NET framework. The book, "C# in Easy Steps" was a good one, although the content was very shallow.

For C, I used an old (1993) book called, "ANSI C", by Barclay. Hardly needed anything else for C. There are plenty of learning resources on the WWW.

For Java, we used a variety of texts, but "Core Web Programming, 2nd Edn," was by far the most useful. It covers lot of Java, plus some important web technologies, like HTML, JavaScript, CSS, XML processing, and JSPs & Servelets.

commodore
December 27th, 2005, 09:52 AM
windows game programming for dummies.

They are really a must for C++ programming.

?? Windows??

quincunx
December 30th, 2005, 10:13 AM
How did _I_ learn to program? BY JUMPING IN! I could list all the languages, which ones I did first, what I use different ones for now, but the main point is just to immerse yourself. Select a language and google search it with the word "tutorial". (i.e. "logo tutorial"), but a book or two, join a forum related to that language... PLUNGE!

Pick any language. The best ones were mentioned on this list at least a few thousand times. Languages that were only mentioned here a few hundred times (exaggerating) could be ignored, but it really doesn't matter. One route is just slightly more practical.

The reasoning is this. The concept of "programming" deals with concepts common in nearly every language (setting variables, calling functions, loops, if-thens, queues, linked-lists, etc). Start with a language that appeals to you in any way.

If you ended up choosing language that's rarely used, convoluted, or just isn't suiting your needs (in your case, learning*). You'll probably switch to a language that suits you better (just like nearly everyone that posted on this list). You will have to learn a new syntax (the new language you chose), but the same concepts (setting variables, loops, if-thens, etc) will still be there.

Learning the individual concepts of programming are quite simple in most cases (pointers to pointers usually throw people), the most important aspect to look for when learning from different resources is they style in which you code. From the higher-level design down to how you indent individual lines of code when nesting. It's the style of development and coding that will make everything easier/better in the long-run.

One last BIG piece of advice.... comment everything at first. If you don't know what it means to "comment" something, you'll quickly learn. Once you get the hang of the basics, commenting each line of code will be a pain, but it's still good to comment as much as you can. I've had code that I thought I could remember what everything did; only a few months later it took me hours! If I had made comments for each function it would have only taken me minutes.

Most of all....Have fun!

-Quincunx

*--- There are actually several languages out there made just for learning how to program. Some of these ended up being so well done that people started to use them to write real programs. Pascal was one such language. Scarce today, but in it's heydey, it nearly everything (in the retail world) was starting to be written in Pascal. I know a current language has a similar story. Is it python? I just read it somewhere recently.

rolfotto
December 30th, 2005, 12:24 PM
One last BIG piece of advice.... comment everything at first. If you don't know what it means to "comment" something, you'll quickly learn. Once you get the hang of the basics, commenting each line of code will be a pain, but it's still good to comment as much as you can. I've had code that I thought I could remember what everything did; only a few months later it took me hours! If I had made comments for each function it would have only taken me minutes.

I disagree with the "comment everything". Comments can become like hungarian notation, they become easily outdated in relation to the current state of the program with little incentive for the programmer to update it, especially profuse comments. Of course, I refer to Hungarian notation because, likewise, it can get outdated - it has the bad symptom of getting variables stuck with names that may change type (and thus have the name implying the wrong type) over the course of the life of the program, but the variable can't be renamed easily for backwards compatibility, etcetera.

Commenting every line where it's obvious what is happening (a+a; or b*b;) would be pedantic and cause one to start skimming over comments like spam, defeating the purpose.

Restrict comments at beginning of function describing why and what, or at a confusing line of code or at the top of the file. Learn to comment what is important, not the trivial.

But the ultimate purpose of comments is readability - and comments aren't the only important element contributing to this, giving variables/functions/files appropriate and descriptive names goes a long way of reducing confusion in the first place and making things more readable.

Not every int has to be a single character x, y, or z. Nor does every function have to be called foo.

EnGee
December 30th, 2005, 05:35 PM
Back in the 80's when i studied statistics, we learnt some Fortran (which was difficult for me) and Basic (which taught me very bad habits but it was very easy). Then I left all this staff for some reasons till 98, but my dream to be a programmer never changed. I started with HTML and some C (which i liked a lot in that time). One year later I found a job as PC tech + System Adminstrator (Windows) and I started to do some programming in VB6 (was easy). .Net was a fantastic idea! Write in any language supported and in any OS you like! so i learnt VB.Net then C# and i waited for this promise from M$ but after 3 years i felt it will never happen! I felt cheated (or was it me who cheated myself?!!). So, I abandoned .Net and started with Java which I like really.
I found myself agree with quincunx in his advices, just start in any language and see if you really want to be a programmer. Maybe you want to make a list of the candidates, for example: Lisp, C/C++, Java, Python, Ruby, PHP. Then start to read about them and what differences they have between each other.
Another thing I might add is what kind of programming you have in mind? Games, Database related software, Sound, Operating Systems ...etc. Becuase you'll realize that some languages suited better for specific kind of programming, also games and sound design needs a lot of Math (and maybe physics), while other kinds depend on logic and simple math.
nowdays It is rare that you find a programmer that has started with a language and kept with it not knowing any other languages. So mostly you will not only know one language, but be sure to be very good in one language and can be productive with it in the future. It will not serve you knowing little from all.
Last advice (and most important one in my opinion), is be modest and don't be affected by some snobby guys who try to break you down (the great persons are always modest persons) because they are not great and don't deserve to be an ideal for us.
Good luck

David Marrs
December 30th, 2005, 06:32 PM
Commenting every line where it's obvious what is happening (a+a; or b*b;) would be pedantic and cause one to start skimming over comments like spam, defeating the purpose.

On the other hand, it's easier to delete comments in the future than it is to add them. An experienced C coder would never have to write
*p++ //increments pointer, not the value being pointed at but it might save a novice from having to pull out the reference manual every time he reads that line of code.

quincunx
December 30th, 2005, 10:50 PM
Commenting every line where it's obvious what is happening (a+a; or b*b;) would be pedantic and cause one to start skimming over comments like spam, defeating the purpose.

On the other hand, it's easier to delete comments in the future than it is to add them. An experienced C coder would never have to write
*p++ //increments pointer, not the value being pointed at but it might save a novice from having to pull out the reference manual every time he reads that line of code.

Exactly!! I don't expect someone to still be commenting each line of code after playing with a language for a month or few (depending on how fast you learn). Commenting where it's obvious *is* pedantic. But to someone whose never touched code before, NOTHING IS OBVIOUS!

At first though, for newbies "var int count='10';" looks really freakin' scary. What does it mean? Why are there only parts of words?... hmmm... it takes a while to comprehend (vetrans: imagine taking 1-2 minutes to comprehend each line of your code). A month later a quick glance at the same statement and it's immediately obvious. It's at this point that many people quit using comments all-together. This is why I say keep commenting, but just for each function, not every line of code.

First use comments to learn what's going on. Then use comments to keep undstanding what you wrote. It's actually a bit tricky, what seems obvious today might not be obvious eight months from now.

-Quincunx

j-a-p
December 31st, 2005, 04:58 PM
I'm also starting to learn to program. I have used some C++ and Ruby. I tend to get the basics OK. I understand OO etc. I can write programs in these languages.

My problems start when I want to write GUI or web apps or interact with a RDBMS such as MySQL. What tools do I need.

I get confused as to which way to go. I can't seem to find anything to take the pain out of developing a GUI so I can concentrate on the actual reason I started to write the program in the first place. In Visual Studio you just draw your interface effectively and write the code behind.

I think I want to persist with Ruby, but is this a good idea since it is not as wide spread as C++ or Python for example? Are there any future proof languages.

I've also considered Pytyon, but when I looked web programming with python I was overwhelmed with all the tools available.

Is there a language that has a consistent tool set? I want to use what everyone else is using (if you know what I mean), so I can understand other peoples work.

DeniseDD
January 1st, 2006, 05:20 PM
I started with a basic book on vb, then I went to one of those get programming quick schools, learned the basics for c, c++, sudo code (important to know), html, java, cobol, as400, vb, qa, unix command line, oracle forms, and sql. Later I worked in a data library, lots of processing. Working there everyone who needed a unix script seemed to need one written in the language they preferred- So I did a lot of scripting in bash, ksh, csh, tcsh (which personnally I don't see how you can look at one of these and see that much difference between them but some people do) Then there were those who chose to write in sas, c, perl or python. So it was more books and learning for me. Because one may write in perl, but another can't read PERL only PYTHON (yup I was a little bitter, yes allow me to rewrite that for you) I also had a lot of database work also, So I used sql quite a bit. I also did some volunteer work at a local school where my daughter goes, so I picked up quite a bit of Access and database design. Of all the languages I have been exposed to I prefer perl and continue playing around with it, and really enjoy working with databases. I made a note next to sudo code because it really is important to know and will help with your coding and program design whatever language you choose to code in.

zambizzi
January 1st, 2006, 06:43 PM
I've been writing software professionally for over eight years now...and I had absolutely no formal education or professional training (save for on-the-job experience.)

I started with a facination with how "things work". I dabbled in a little HTML, put up a "home page"...and started learning the ropes. Then I came across JavaScript...cool stuff! I started digging into other peoples' code, changing and tweaking (mostly guessing) and doing web tutorials where I could find them (less info in the mid-90's than we have now...there was no google then!)

I moved out west and started working in Seattle as a "web designer" and the natural progression (being the Seattle area) was to learn to use Microsoft technologies. I picked up on ASP, VB, COM, etc. and read book after book until I could actually build applications w/o constant reference.

Then I took the plunge...I landed a couple of jobs over the next few years that allowed me to transition to "web application developer" based on my own knowledge (rather than background or education) and was successful.

I later moved on to .NET and C# when learning a true object-oriented programming language.

Then, a funny thing happened. I landed a contract where I was exposed to Java and J2EE. This was perfect for me as I had developed an interest in Linux and wanted a .NET alternative for enterprise Linux - I haven't looked back since!

I *love* Java....Java on Linux is fabulous.

I now work for the second largest privately-owned company in the state...and spend my day working w/ Java/J2EE, ASP.NET, ASP, etc. - a good mixture and pretty safe for the current job-market.

zambizzi
January 1st, 2006, 06:51 PM
I'm also starting to learn to program. I have used some C++ and Ruby. I tend to get the basics OK. I understand OO etc. I can write programs in these languages.

My problems start when I want to write GUI or web apps or interact with a RDBMS such as MySQL. What tools do I need.

I get confused as to which way to go. I can't seem to find anything to take the pain out of developing a GUI so I can concentrate on the actual reason I started to write the program in the first place. In Visual Studio you just draw your interface effectively and write the code behind.

I think I want to persist with Ruby, but is this a good idea since it is not as wide spread as C++ or Python for example? Are there any future proof languages.

I've also considered Pytyon, but when I looked web programming with python I was overwhelmed with all the tools available.

Is there a language that has a consistent tool set? I want to use what everyone else is using (if you know what I mean), so I can understand other peoples work.


For learning simple data-access and feeling your way around, I would start w/ something like PHP - where data-access is bolted right into the language and doesn't require any real setup (other than the db.)

Some will argue that PHP (or another equivilent scripting language) is all you'll ever need and there is no need to learn something like C++, Java, etc....but the market speaks the truth on that...not the zealots.

So, do some PHP/mysql/postgresql tuts and learn the ropes...make some simple apps...then move onto something like Java which gives you a full GUI toolkit and has top-shelf development tools (e. g. Netbeans, Eclipse, JBuilder, IntelliJ IDEA, etc.) - Also, IMO, there is no greater innovation happening in the open source world than there is w/ Java these days...

PHP - small to medium-small web applications (smaller number of concurrent users)

Java, .NET, C++, wxWidgets, etc. - Larger, enterprise-grade applications which require extreme scalability, systems integration, and robust frameworks (GUI, data-access, etc.)

HTH!

Christos
January 9th, 2006, 04:09 AM
Hi everyone..;)

I just became a member to the forum and i'd like to first say hi!!! to everyone. I saw this section about programming and i thought i should post a comment as well, as i'm involved with programming myself too.

I guess i'll play the role of the black sheep for now. :D I started programming a couple of years back with Visual Basic. Not the best choice, and i would have definitely gone the opposite way if i were to start all over again. I've used VB .Net for a quite a while now, but i'm trying to switch to something more serious like C++ by teaching myself through various books that i have purchased. I'm an Information Systems student at a University in California and i LOVE programming courses; in Spring i'll be taking courses on Java as well.

Don't take me wrong cause I'm really fed up with VB and Microsoft's inspirations to take over the programming world as well. I definitely do not want to partake in that and i'm vary glad that i've made up my mind to walk away from Visual Basic and hopefully from Windows alltogether. It's quite difficult though to switch from VB to something else, at least i'm having quite a lot of trouble. I can't wait to start dealing with C++ in greater deptths to be honest, and i'm doing my best to get there. :cool:

My most favorite programming concepts are Random Access and Object Oriented Programming (classes, inheritance, polymorphisism, event handling!) I guess some people consider Random Files to be outdated, if i'm not mistaken, but i love working with them anyway.

Anyaway, thanks for reading my first post in this forum and hope to make it part of your community someday.

Thank you! :)

Azriphale
January 9th, 2006, 02:19 PM
I agree with this completely.


How did _I_ learn to program? BY JUMPING IN!

Pick a language, and start messing with it. Once you start learning to program, switching to any other language is not too difficult, because as Quincunx said, the basic concepts remain the same.

Anyway...
I started to program in Delphi (it was the language we did at school in Computer Studies), and dabbled in C++, python, bash and various others on the side.

I think the language I enjoy to use the most is python. Its clear syntax and the way it works, along with some of the built-in types and all sorts of things like that make it (I think) very good for rapid application prototyping. It also has uses in connecting different segments of an app written in C/C++ and many other languages. And its just fun to play with. You can usually get results fairly quickly.

At the moment, however, I am doing some cross platform development in C++. I think this is probably an important language for anybody to learn. And it is immensly flexible and powerful and useful.

I need to learn to use GTK-- for GUIs. I have used wxPython (the Python bindings to what was then wxWindows, now wxWidgets), but I am not sure where wxWidgets is going, so I don't want to start with that in C++. So here comes GTK--. Eventually.

Zahrber
January 11th, 2006, 06:33 PM
You don't have to start with a specific language. You can start by learning about statements, functions, loops and such then learn to write pseudo-code and then use that with differnet languages til you find one that fits most of your needs.

I started with Basic many years ago, then C++ and now I am in Java.

This is just an idea because you have to write an algorithm before you can learn to program in any language learning the language is secondary.

IMO

Whatever language you pick up first don't pay for a compiler/interpreter there are too many free ones to get you started til you know exactly what you will use primarily

joselin
January 11th, 2006, 07:03 PM
I started with basic, then cobol in the school. After that, in my first job i receive a training in C and VB... then i learn shell, databases, html, php, java... or whatever i need in the proyect where i work.

Regards.

rwilmink
January 14th, 2006, 11:48 PM
Taught it myself, trying, debugging, reading code of others etc.
I started in about 1982 on a ZX Spectrum in Basic. Since that was too slow I learned assembler. Switched to an MSX, still doing Basic and assembler, from there the switch to MS-DOS wasn't too difficult.
On MS-DOS I taught myself C. When Windows was introduced, I started in Pascal for Windows, thus familiarizing myself with OOP, which made the switch from C to C++ easy.
And C++ is what I have been doing for the past 6 years in my current job.

Locke
January 17th, 2006, 06:48 AM
Books... lots and lots of howto books... the classes i'm taking in college just confused the living heck out of me, so i went off on my own and learned it my own way.

Takeshi Miya
January 19th, 2006, 08:15 AM
I need to learn to use GTK-- for GUIs. I have used wxPython (the Python bindings to what was then wxWindows, now wxWidgets), but I am not sure where wxWidgets is going, so I don't want to start with that in C++. So here comes GTK--. Eventually.

I don't really recommend at all using GTK--. Just a personal experience.

I just love wxWidgets, and it keeps getting better.
It is certainly going in the STL compliant direction (ie. using std::string instead of wxString, std::vector, etc) in the next major version.

But so far, if you're going to program in C++, I would recommend, wxWidgets in the first place (native widgets are the best), QT in the second, and GTK (not GTK--) in the third.
Or if you don't have big needs and wants something fast and very lightweight, FLTK or VCF.

Azriphale
January 19th, 2006, 05:28 PM
Thanks, Takeshi Miya

I have previously used the Python bindings to wxWidgets, and found it was quite pleasant.. So, I guess you are right. Time to pull out wxWidgets proper and start learning it in C++. I should probably go and do some research on this.

phen
January 19th, 2006, 06:15 PM
hello!

important is that you have something like an aim you want to achieve. i always lost interest in programming, because i didn't knew, WHAT to program. meanwhile, i need a lot of fortran for work, but there's one thing i can really recommend: robocode !

http://robocode.sourceforge.net/

ruudiculus
January 20th, 2006, 12:04 PM
I started programming at school (electronic engineering) in Pascal using the Borland Delphi IDE. We also had a short introduction to assembly programming on x86 based computers. During the study I also learned C programming and Java and at the moment I'm programming in assembly again (a Bluetooth DSP). I also learned VHDL, but that's a real other world: that's programming hardware!

Which language is the best, is just a matter of what suits your needs. I think it's good to keep in mind that you can program in interpreted languages (scripting) and in compiler languages. When you're new to programming and you want to program an application but you don't know what language to choose you should consider your skills in Physics and abstract thinking. (The things I say below don't count for scripting languages, since they are often much more specific for a task. Besides that I don't know much about those languages: that's my girlfriends territory :razz: (I'm one of the few fortunate nerds on earth that has a nerd-girlfriend :rolleyes: ))

If you're good at Physics (also read Mathematics!!!) and you can imagine that a processor is just a thing that can do some basic (and a lot of smart) tricks with data and instructions represented by ones and zero's, and you find it challenging find an optimum in performance of you program you can try and learn an assembly language.

If you like to program an application in a more human readable way (that means more abstraction), you would want to start learning a higher programming language (or maybe a scripting language). There's a whole collection of higher level languages, but generally they all provide the same basic set of instructions. If you want to start with something readable, from my own experience I can recommend pascal (Delphi, or for linux: Kylix and Lazarus), since it has a lot of easy to learn functions and the syntax is quite easy (not case sensitive). You'll have a program written and running in no-time.

If you have learned the basic instructions and you've come to understand how functions are used and which data types you can declare and how to use them, I think it is time to move to a language that's more convenient in syntax (a lot shorter); I would recommend C, but that's just because I want to program applications. I think this is where all the posts about "every language can be considered as a separate tool suitable for a specific goal" come in.

The only advice I can give in choosing your programming language is that you probably shouldn't immediately switch from e.g. pascal to C++/C#/Java since those languages have an even higher abstraction level (using classes and having a non sequential program flow). That's something I think you would want to do when you're more advanced in for example C.

At all times a good programming book helps a lot! I use:

Teach yourself c in 21 days (Jones Aitken) - great book with introductions to C++/Java as well!
C++ for dummies (Davis) - stupid book!!!Don't buy!
Assembly programming (Blum) - using inline-assembly in higher programming languages
Leerboek Delphi (Stefanski) - Dutch translation


Well I hope I've encouraged some people to get programming!!! Good luck!

kvorion
January 27th, 2006, 09:19 PM
I started programming when I was in school. The very first language I used was LOGO.....we started off with drawing funny little shapes using that language :)
Was quite a bit of fun. The next thing I used (in school) was GWBASIC....really the first language that taught me to program.

Right now I work on C and C++

Planning to take a shot at a couple of other languages just for fun

nim278
January 30th, 2006, 11:25 AM
So, right now I'm sitting with a decent background in simple programming. I'm a self-proclaimed god to coding VBA to create glorified Access databases and Excel spreadsheets at work. Actually, I teach a university course on this as a sessional and use this at work all the time. I've dabbled a bit with Java, ASP.. never any _real_ programming though (ie. standalone apps). I'm not really motivated enough to build something of my own from scratch, but would love to help out on various project of apps I use on a day to day basis while learning a new language by example. How does a humble guy like me jump onto something like that?

Maciej

orlox
February 12th, 2006, 05:54 AM
Not that I have much experience but, if I could turn back in time and chose where to begin, i'd start with something that's really low-level, since that gives you a better understanding of what the machine really does, instead of the abstractions that a high-level language implies. I personally started high-level, and in my "way down" i became aware of many misconceptions I had...I've also read that learning very low-level programming (like assembly) improves also your capacity to generate efficient code on high-level ones...

bbqbaker
February 15th, 2006, 05:33 PM
i learned to program by taking the data structures course in college, that was taught by a professor, who failed 30-40% of the class. sink or swim...

i wasnt able to learn much since i was just worried about passing, but i think through this experience, it help me learn things on my own.

i do agree though that it would of been better learning from the lowest level of programming.

oldmanstan
February 16th, 2006, 07:05 AM
My dad showed me how to make simple games and other programs using GW BASIC when I was in 3rd grade. I didn't grow up to become a programmer but it did give me a foundation for actually understanding what is going on behind the stuff sitting on the desktop. Since then I've dabbled in probably 6 or 7 languages and it definitely has the makings of a lifelong hobby.

vbmaster
February 27th, 2006, 02:45 AM
Well, since I was younger I always have the natural curiosity of know how to build a program, how to get inside that world.

I was by the age of 13, and I barely knew how to use MS Word, but I start making things on vb by my own, with the help of a book that I bought.

VB is really the language that most excites those who are novice in programming because it's the one that faster shows us pratical results (just needing to design a textbox, a commandbutton, put the code and voilá... our first application :P ).

I keep myself three years attached to vb, bought more books, and started surfing for more knowledgement at the net.

This summer I wanted to start with something more hardcore, something more "real programming", and I started learning c++. All this alone, and i'm not in a programing course (in fact i'm still 16 - almost 17), but this is what i really want to do in my life.

Prograamming rullez... and for me, the best way to start to learning alone is simply by getting the help from a book. ;)

Stay cool ;)

Galaxyz
February 28th, 2006, 08:15 PM
Is there a c++ version for ubuntu or for a Debian Platform ?
If it is true , wich version and where can i find it ?

Thank you

vbmaster
February 28th, 2006, 08:38 PM
Is there a c++ version for ubuntu or for a Debian Platform ?
If it is true , wich version and where can i find it ?

Thank you

are you talking about an IDE?

if you're, there is Anjuta.

ComplexNumber
March 6th, 2006, 04:15 PM
I don't really recommend at all using GTK--. Just a personal experience.

I just love wxWidgets, and it keeps getting better.
It is certainly going in the STL compliant direction (ie. using std::string instead of wxString, std::vector, etc) in the next major version.

But so far, if you're going to program in C++, I would recommend, wxWidgets in the first place (native widgets are the best), QT in the second, and GTK (not GTK--) in the third.
Or if you don't have big needs and wants something fast and very lightweight, FLTK or VCF. just curious, but why would you not recommend gtkmm(gtk-- is now called gtkmm)? and why would you place qt above gtkmm?
btw gtk is C, not C++.





i started programming basic on a zx81.

knalle
March 6th, 2006, 04:16 PM
it started with trying to hack the highscore in great gina sisters , my kid brother was better at playing than me so i cheated by hacking the highscore, its been all downhill from then

Henry Rayker
March 7th, 2006, 02:34 AM
I started with C++ in high school...I'm currently in college and have expanded on C++, learned what nice little things it has that C doesn't...that was a rough semester.

Additionally, I've learned some assembly for the Motorola C32 microcontroller. That class was heinous, only because the professor just couldn't explain anything. He wrote the book, so our two sources for information were essentially the same. Neither was well executed, either.

I'm currently learning about architecture, though, and replacing programs with pure hardwired logic and, while that's interesting enough, it feels like you have to be able to predict the future to do anything right.

I guess my programming history is a bit boring.

The most important thing I remember from any of it, though, is the first thing my first programming teacher talked about. Basically, she told us that, while starting with C++ is like handling a shotgun and not knowing which side you should point out, it's a much quicker way to go than to drown in all the details of anything more basic.