LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (https://www.linuxquestions.org/questions/programming-9/)
-   -   What's a good Programming language to begin with? PLZ HELP! (https://www.linuxquestions.org/questions/programming-9/whats-a-good-programming-language-to-begin-with-plz-help-347179/)

Jonescity 07-27-2005 01:48 AM

What's a good Programming language to begin with? PLZ HELP!
 
Hi my name Johnathan and i'm 19 I've been using linux for about a year and a half and in recent months I've gotten interested in programming! My question is what's a good programming language to begin with? A few days ago I read some good things about perl and I bought a "beginning perl book" by James lee. Before I begin is there any other easy programming languages I should begin with or is this a good begginners language? I want to learn how to make good command line programming (example make a command line mp3 player) (Boy I can dream)! or something like that before I go into GUI programming!


Oh yeah I heard some good things about C but, some people tell be it's obsolete! and you can't write any usefull apps with it (obviously they know nothing about C) Any thoughts?

Two more things:

1. Do I need to know C before going to C++ ?
2. What kind of math you need to know for different programming languages?

Thank You All Very Much!!


-- Johnathan :D

:newbie:

Nylex 07-27-2005 02:04 AM

I hear Python is a good language to start with, but I don't have any experience with it.

I'm learning C++ at the moment. You don't need to know C before learning C++. I don't know much about C, but the Linux kernel is written in it (I think! Someone will tell you if I'm wrong).

As for maths, well, it might help to learn about binary numbers, octal numbers, hexadecimal. Books on programming usually have an appendix with stuff about these in. I haven't been through and read those yet, but I probably should!

hk_linux 07-27-2005 02:20 AM

Sometime in the recent past, there was a similar dicsussion.

http://www.linuxquestions.org/questi...hreadid=335415

HTH

enemorales 07-27-2005 04:43 AM

Just to make it clear. C is FAR from being obsolete. It is being widely used (for instance in the Linux Kernel) and it will be for a looong time. ;)

vharishankar 07-27-2005 05:11 AM

Some options available to you are:

C/C++ will make you a tough, no-nonsense programmer. You can virtually program in every OS if you are strong in your fundamentals. If you can learn and master C/C++ then you can go on to other languages.

Java will give you a good foundation in OOP and is fun to learn and use because of the rich set of features. Cross-platform too. Java is easy to learn too once you get your fundamentals right (programming concepts, structure of Java and so on).

Python is also fun to learn and is cross-platform too. However, not as cross-platform as Java is. However has a rich set of features thanks to *a lot* of modules/bindings that add a lot of power to Python scripts/programs.

Pascal may sound outdated, but Linux has the free pascal compiler and IDE. If you long for the old Turbo Pascal days, you can install and use Free Pascal. Recommended if you are good at Pascal and want to continue with it. Free pascal has support for objects.

PHP for web development if you are interested. Excellent and powerful while being easy to learn and use. Definitely recommended over Perl if you plan on creating dynamic database driven websites.

Shell scripting. I haven't really learnt this myself, but many Linux gurus recommend this as a good way to learn and use Linux as such.

enemorales 07-27-2005 07:04 AM

Quote:

Originally posted by Harishankar
Python ...However, not as cross-platform as Java is....
I have read that, despite with advertising says, this is not 100% true. I just installed Python in my PocketPC and now I'm looking for a editor to write scripts while I'm on the bus ;)

Jonescity 07-27-2005 12:37 PM

Quote:

Originally posted by Nylex
I hear Python is a good language to start with, but I don't have any experience with it.

I'm learning C++ at the moment. You don't need to know C before learning C++. I don't know much about C, but the Linux kernel is written in it (I think! Someone will tell you if I'm wrong).

As for maths, well, it might help to learn about binary numbers, octal numbers, hexadecimal. Books on programming usually have an appendix with stuff about these in. I haven't been through and read those yet, but I probably should!

OK I know binary and I know HEX is like: 1,2,3,4,5,6,7,8,9,A,B,C,D,E,F but say for instace I need to look for 64 in HEX how would I do that? :study:

Can some please answer this next question as tried to look for a clear cut meaning on wiki-pedia but,

WHAT is object-oriented programming and what it does/what's it's used for? and do anyone here use it and what other languages use it? (I know JAVA uses it) :confused:

Jonescity 07-27-2005 05:16 PM

anyone? :(

Nathanael 07-27-2005 05:46 PM

there is quite a lot of information about programing languages on the LQ wiki pages (http://wiki.linuxquestions.org/wiki/Programming)
also google-ing for "object-oriented programming" will give you a lot to read, and a lot to learn about OO languages.

searching for 'hexadecimal' on google, was also a success and the first listing is a wiki page, which is fairly good... read, this will not just explain hex, but also teach how to read it.

R00ts 07-27-2005 05:52 PM

Personally I would recommend starting out with C, because it will give you a great foundation on which to build off other programming skills/languages on. I DO NOT recommend starting with Perl, because Perl is really high-level and abstract. I would wager that learning Perl as your first language could be enough to scare off most people from programming altogether. :eek:

Jonescity 07-27-2005 06:10 PM

Quote:

Originally posted by R00ts
Personally I would recommend starting out with C, because it will give you a great foundation on which to build off other programming skills/languages on. I DO NOT recommend starting with Perl, because Perl is really high-level and abstract. I would wager that learning Perl as your first language could be enough to scare off most people from programming altogether. :eek:
Thankyou! I will be returning my book and I may start with C OR C++ :)

vharishankar 07-27-2005 09:33 PM

del double post.

vharishankar 07-27-2005 09:34 PM

Quote:

Originally posted by enemorales
I have read that, despite with advertising says, this is not 100% true. I just installed Python in my PocketPC and now I'm looking for a editor to write scripts while I'm on the bus ;)
Sure, you have Python on many platforms. That's what not I meant. I meant writing 100% cross-platform code in Python is harder than in Java.

What I meant was that in many cases you will not be able to use the write-once, run-everywhere thing with Python.

Unlike Java, you do find platform specific APIs in many Python modules/bindings which might not work on all platforms.

Nylex 07-28-2005 01:33 AM

64 is 40 in hexadecimal, but I can't seem to work out why. I'm finding it hard to write 64 in binary, even though it should be easy.

chrism01 07-28-2005 01:41 AM

Here's a cheat sheet for Decimal/binary/hex/ASCII
with a short explanation http://www.prepressure.com/library/binhex.htm

Try googling 'number bases' for more info. The relevant ones for programming are: 10 (decimal), 8 (octal), 16 (hexadecimal or hex for short), 2 (binary) ...

BTW as for C vs Perl, they're both good langs.
Perl is less finicky with eg datatypes, worrying about string lengths etc.
C is more picky, but teaches you good lessons about disciplined programming and also the fundamentals eg most higher level langs eg Perl, PHP, Java, SQL are written in C underneath, as are RDBMSs and large parts of OSs :)
If choosing Perl, always use warnings and strict options ie;

#!/usr/bin/perl -w
use strict;

davholla 07-28-2005 08:42 AM

Quote:

Originally posted by Harishankar
Sure, you have Python on many platforms. That's what not I meant. I meant writing 100% cross-platform code in Python is harder than in Java.

What I meant was that in many cases you will not be able to use the write-once, run-everywhere thing with Python.

Unlike Java, you do find platform specific APIs in many Python modules/bindings which might not work on all platforms.

I disagree when you write python code you should know that a module is not cross platform and therefore it will not be cross platform.

The bad thing about python is that Windows does not have python by default unlike Java so people have to install it to get cross platform code.

However as python is open source it can be ported to all platforms with a C compiler unlike Java, which does not work on all platforms I think.

So in some ways it is easier in python to write cross platform code.

enemorales 07-28-2005 09:34 AM

Quote:

Originally posted by davholla
I disagree when you write python code you should know that a module is not cross platform and therefore it will not be cross platform.

The bad thing about python is that Windows does not have python by default unlike Java so people have to install it to get cross platform code.

However as python is open source it can be ported to all platforms with a C compiler unlike Java, which does not work on all platforms I think.

So in some ways it is easier in python to write cross platform code.

With Jython, the set of platforms where Java runs is a subset of the set of platforms where Python does... :)

pgmer6809 07-29-2005 10:56 AM

What problems interest you
 
The big thing about learining to program is learning the first language.
The way to learn a language is to write a program.
So what kind of program would you like to write?
Most languages are best for certain kinds of problems.
a. web page scripting etc. RUBY or PHP
b. parsing text, and generating other languages. PERL
c. Coding library routines or neat utilities to deal with disks, displays etc. H/W => C
d. GUI based app where the user interface is a major componnent => JAVA, C++
e. Getting your mind around Object Oriented concepts etc. PYTHON, RUBY, JAVA, EIFFEL

Well you get the idea.
Dont try to hammer a nail with a screwdriver.

Quigi 07-29-2005 02:02 PM

At your Linux command line, type
Code:

printf %x\\n 64
and it will tell you it's 40 in hex. It's no big deal -- in a program you can just type what you have, 64 or 0x40 or 0100 (decimal, hex, or octal), and it's all the same thing.

There's way more to object oriented programming than we can tell you here. You try to structure your problem in terms of "objects" and what you can do to them. There's some lingo that comes with OOP. The operations that an object supports are often called "methods" instead of "functions" or "subroutines". Objects of the same type are said to be in a "class". A more specific class can be derived from another class, which can be read as an "is a" relationship, like "a dog is an animal". One says the derived class "inherits" members/capabilities from the base class. In this way, you build class hierarchies. Well, this is probably going to sound like gobbledygook till you read a book.

E.g., C++, Java, and Perl are object-oriented. Each has its merits as a first language.

Perl will be the quickest to get a program running and do something interesting. "Perl is designed to make the easy jobs easy, without making the hard jobs impossible". Perl has a wealth of language features, which let you write very dense code, to the point of being cryptic. Other people's perl can be hard to read. There are good books -- I thoroughly enjoyed reading "Programming Perl" by Wall, Christiansen, Schwartz.

If you look for discipline, use a strongly typed language like Pascal, C++, or Java.

Java may be a good start. It's still high level and goes to great lengths in preventing you from getting into lower level trouble. It checks your every array access, so you learn right away when you reach outside. It collects garbage after you (which gives you less to worry about, but may teach you to be sloppy, because you just drop objects when you're done with them).

C++ is a very rich language. It lets you get closest to the machine, which you may need to write an mpeg3 player :-). There are several language features that you don't get in Java, e.g., operator overloading (you can define what "a + b" means if a and b are your custom objects), templating, and multiple inheritance. You will not use these features right away, but when you need them later, they are ready.
Learning C first seems like a detour -- I wouldn't start there.

exvor 07-29-2005 07:24 PM

i would say that knowing introductory algebra would be helpfull if you were
learning C. Please note tho that pure algebra is not implmented into C.
Programming language as a general is just a way to make humans understand
how to talk to a computer that is more natural for them so that they can make
it do what they want. Think of computers are your slaves they no nothing and
do nothing more then what you tell them to do.


As to witch one is eazier to learn or witch would be beter its more style. Or
better level of control. C gives you the ablity to control memory and more
closly exactly how the program will be executed. Assembly gives even more
control . Java gives you less because you do not need to worry about as
much things.

Note i have never learned any programming language other then C and very
little C++ (even tho most programs in C++ are just C programs with cout :p)

from what im told tho working with some of the so called eazier languages like
python and java are better for new programmers because you do not need
to worry so much on memory management or other processes.

If i would have to recommend if you can understand algebra like basic algebra heres an example x = 45 means x is 45 then you can probably learn C or C++ :)

Jonescity 07-29-2005 09:34 PM

Quote:

Originally posted by Quigi
At your Linux command line, type
Code:

printf %x\\n 64
and it will tell you it's 40 in hex. It's no big deal -- in a program you can just type what you have, 64 or 0x40 or 0100 (decimal, hex, or octal), and it's all the same thing.

There's way more to object oriented programming than we can tell you here. You try to structure your problem in terms of "objects" and what you can do to them. There's some lingo that comes with OOP. The operations that an object supports are often called "methods" instead of "functions" or "subroutines". Objects of the same type are said to be in a "class". A more specific class can be derived from another class, which can be read as an "is a" relationship, like "a dog is an animal". One says the derived class "inherits" members/capabilities from the base class. In this way, you build class hierarchies. Well, this is probably going to sound like gobbledygook till you read a book.

E.g., C++, Java, and Perl are object-oriented. Each has its merits as a first language.

Perl will be the quickest to get a program running and do something interesting. "Perl is designed to make the easy jobs easy, without making the hard jobs impossible". Perl has a wealth of language features, which let you write very dense code, to the point of being cryptic. Other people's perl can be hard to read. There are good books -- I thoroughly enjoyed reading "Programming Perl" by Wall, Christiansen, Schwartz.

If you look for discipline, use a strongly typed language like Pascal, C++, or Java.

Java may be a good start. It's still high level and goes to great lengths in preventing you from getting into lower level trouble. It checks your every array access, so you learn right away when you reach outside. It collects garbage after you (which gives you less to worry about, but may teach you to be sloppy, because you just drop objects when you're done with them).

C++ is a very rich language. It lets you get closest to the machine, which you may need to write an mpeg3 player :-). There are several language features that you don't get in Java, e.g., operator overloading (you can define what "a + b" means if a and b are your custom objects), templating, and multiple inheritance. You will not use these features right away, but when you need them later, they are ready.
Learning C first seems like a detour -- I wouldn't start there.

That does sound a little strange right now but, I've just two books on C++ and one C the C book they had assume you knew other program languages as I do not. and Thank You all for all of your info so far I Truuuuly Appreciate it! As i'm trying to get a programming career off the ground! :) :study:

Hmmm.... I did not know linux could a "print" command like that! Thanks!

Jonescity 07-29-2005 09:55 PM

I bought these books could anyone comment on these and make a suggestion on these titles? Has anyone had any of these titles?

1. Practical C++ Programming by O'REILLY (With some kind of Squirrelly-Rat on the cover LOL! ) :study:

2. SAMS Teach your self C++ in 24 hours. By Jesse Liberty, Davis B. Horvath. (Obviously i'm NOT trying to learn C++ in 24 HOURS!) :study:

These are the only two books I've read the intro on in the store THAT ASSUME you didn't have any program experience.

I picked this one up just in case. As i've heard rave reviews on this one and that is

3. The C Programming Language (ANSI C) (Second Edition) By Brian W. Kernighan and Dennis M. Ritchie :study:

As from my understanding they are the pioneers on the C programming language but, this book assumes you know how to program I think.


Anyone has a take on these titles or even recommend something else? :scratch: :newbie:

Jonescity 07-29-2005 10:02 PM

Quote:

Originally posted by exvor
i would say that knowing introductory algebra would be helpfull if you were
learning C. Please note tho that pure algebra is not implmented into C.
Programming language as a general is just a way to make humans understand
how to talk to a computer that is more natural for them so that they can make
it do what they want. Think of computers are your slaves they no nothing and
do nothing more then what you tell them to do.


As to witch one is eazier to learn or witch would be beter its more style. Or
better level of control. C gives you the ablity to control memory and more
closly exactly how the program will be executed. Assembly gives even more
control . Java gives you less because you do not need to worry about as
much things.

Note i have never learned any programming language other then C and very
little C++ (even tho most programs in C++ are just C programs with cout :p)

from what im told tho working with some of the so called eazier languages like
python and java are better for new programmers because you do not need
to worry so much on memory management or other processes.

If i would have to recommend if you can understand algebra like basic algebra heres an example x = 45 means x is 45 then you can probably learn C or C++ :)

OK I have the math part covered I! (don't really love math all that much anyway but, I know it's important) One question does the order of operations apply with programming (PEMDAS) especially C++ or do they have their own? (I think this is called the order of operators).

exvor 07-30-2005 07:01 AM

Yes there is an order of operations but it can differ slightly to that in algebra. Almost any C book will tell you what it is tho.

Nylex 07-30-2005 07:43 AM

What you will be looking for in a book is "operator precedence", or something similar.


All times are GMT -5. The time now is 10:45 PM.