Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
First Language
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Off the Wall
View previous topic :: View next topic  
Author Message
craftyc
Guru
Guru


Joined: 23 May 2002
Posts: 443
Location: Behind You.

PostPosted: Fri Aug 30, 2002 6:11 pm    Post subject: First Language Reply with quote

I would like to learn to program (in as many languages as possible). What do you guys think would be the best language to start with (no matter how old)?

Thanks.
_________________
Postcount ++
Back to top
View user's profile Send private message
chamber001
n00b
n00b


Joined: 27 Jul 2002
Posts: 3

PostPosted: Fri Aug 30, 2002 7:13 pm    Post subject: Reply with quote

Some people might try to tell you that HTML or one of the many markup languages would be the best. Still others might suggest one from the BASIC Family (QBasic, QuickBasic, Basic, Visual Basic). Some more might reccomend Java. It really depends upon what kind of programming you want to do and what kind of experiences you have. Basic is good for learning to understand Logic (computer logic, not like mental logic). Java is ok if you want to go to a GUI and learn some of the modern concepts of Object Oriented Design, the one problem is Java takes more time to master because of the GUI. I would advise C++. It allows you to practice Object Oriented Design as well as the C/C++ Language, which Java is built on as well.
Back to top
View user's profile Send private message
craftyc
Guru
Guru


Joined: 23 May 2002
Posts: 443
Location: Behind You.

PostPosted: Fri Aug 30, 2002 7:20 pm    Post subject: Reply with quote

So would Basic be a good basis to learn other languages?
_________________
Postcount ++
Back to top
View user's profile Send private message
phong
Bodhisattva
Bodhisattva


Joined: 16 Jul 2002
Posts: 778
Location: Michigan - 15 & Ryan

PostPosted: Fri Aug 30, 2002 7:40 pm    Post subject: Reply with quote

I've got to recommend C to start with. You'll have to program in it someday, and most modern languages are based at least roughly on its syntax. Once you're comfortable with the concepts of programming, what language you use is a much smaller issue and picking up new languages will be easy. C is the ideal jumping off point IMO. Almost every real application is written in C/C++. Almost all the rest are written in a language that gets interpreted by an interpreter written in C/C++.

HTML isn't exactly a programming language but is good to know and is related. Perl and Python are really common in the Linux world and being familiar with them is helpful. I haven't played around with Ruby much, but it looks interesting. Knowing SQL and how to design sensible database schemas is a Good Thing and is very much unlike other programming languages you'll encounter. Also, even if you don't want to program in Perl (there seems to be some campaign to incite hate against it right now for some reasons), you'll want to know how to write regular expressions, and the Perl-esque style is the most common (and most copied, though it is also the probably most malinged part of the language).

Languages to avoid: IMNSHO Java is virtually useless except for very special purpose things. Don't bother learning BASIC, it's outdated and won't teach you any modern positive programming ideas. If you get it in your head that you want to learn Cobol, quickly find yourself a blunt instrument to kill yourself with. I don't have a very high opinion of Fortran (it was great back in, um, a long time ago). Maybe its still being used on big mathy supercomputers.
_________________
"An empty head is not really empty; it is stuffed with rubbish. Hence the difficulty of forcing anything into an empty head."
-- Eric Hoffer
Back to top
View user's profile Send private message
craftyc
Guru
Guru


Joined: 23 May 2002
Posts: 443
Location: Behind You.

PostPosted: Fri Aug 30, 2002 7:46 pm    Post subject: Reply with quote

Right then, I'm off to find a C tutorial.
_________________
Postcount ++
Back to top
View user's profile Send private message
phong
Bodhisattva
Bodhisattva


Joined: 16 Jul 2002
Posts: 778
Location: Michigan - 15 & Ryan

PostPosted: Fri Aug 30, 2002 7:48 pm    Post subject: Reply with quote

Oh, you'll probably also want to learn some sort of assembly language once you feel comfortable programming. I don't actually recommend writing anything real in assembler (unless you're doing something freaky), because unless you're a real wiz, a compiler will probably do a better job, but it is good thing to know because you'll better understand how the computer works and will make you write better code in whatever other language you use.
_________________
"An empty head is not really empty; it is stuffed with rubbish. Hence the difficulty of forcing anything into an empty head."
-- Eric Hoffer
Back to top
View user's profile Send private message
pjp
Administrator
Administrator


Joined: 16 Apr 2002
Posts: 16108
Location: Colorado

PostPosted: Fri Aug 30, 2002 7:53 pm    Post subject: Reply with quote

Moved from Portage & Programing (a support forum) to Gentoo Chat (a discussion forum).

While the topic is related to programming, this is a discussion.
_________________
lolgov. 'cause where we're going, you don't have civil liberties.

In Loving Memory
1787 - 2008
Back to top
View user's profile Send private message
phong
Bodhisattva
Bodhisattva


Joined: 16 Jul 2002
Posts: 778
Location: Michigan - 15 & Ryan

PostPosted: Fri Aug 30, 2002 8:23 pm    Post subject: Reply with quote

Oh, and the defacto C reference is of course, K&R, which should reside on every hacker's bookshelf.

Now that I think about it, programming is a bizzare thing to learn. Usually when people ask what programming language they should learn, they should really be asking "What language should I use while I'm trying to learn how to program?" Python, Perl or Ruby might be easier. You really want to learn how to program, not learn a specific language. But to learn how to program, you need to learn a language, and to learn a language, you need to learn how to program. It's a non-trivial activity. Usually, you don't just learn to program, you make a siginificant lifestyle change.

I may want to take back the C suggestion, or I may not, I'm not sure. It is true that every programmer worth anything must know C/C++, at least a little. But it's really hard in some ways. Pointer aritmetic, seg faults, string/character array manipulation, etc. is daunting and frustrating for a n00b and may drive them away in frustration. Newer interpreted languages like Python or Perl do those hard bits for you, which makes it easer to transform your idea into an executable. On the other hand, you'll have to know C eventually, so why hide the dirty bits just to be frustrated by them later on. Everybody has to know it, so you might as well rip of the bandage quickly and get it over with. But, maybe not.

It seems to me that the world of programming languages is just a huge mess right now. The most interesting and useful languages that exist now (php, perl, python, ruby, etc.) are interpreted which is too slow sometimes. Nothing compiled and fast has come along and proven viable enough to replace C/C++, which is full of problems (mostly because of its age). I'd like to invent my own language to solve that, but the last thing we need is another stupid language - there are too many already! It wasn't that long ago that Lisp was the wave of the future and was going to take over everything, and all the programmers would have to learn to think recursively all the time. Probably, in a few years OO will be passe and we'll be on to some new kick, but we'll still be writing everything in C.

It's almost enough to make a programmer quit programming... Nahhh...
_________________
"An empty head is not really empty; it is stuffed with rubbish. Hence the difficulty of forcing anything into an empty head."
-- Eric Hoffer
Back to top
View user's profile Send private message
masseya
Bodhisattva
Bodhisattva


Joined: 17 Apr 2002
Posts: 2602
Location: Raleigh, NC

PostPosted: Sat Aug 31, 2002 6:37 am    Post subject: Reply with quote

I would highly recommend python as a starting language. I would also recommend the following two books: (amazon links..)

The Quick Python Book
Python Essential Reference

This will allow you to learn some of the basic concepts of programming without being held back by really frustrating syntatical elements of programming. The next thing you'll want to do is learn how to progam in C because it's a core part of programming. Another core part of programming is the vi editor, but that's another sorty. :)
_________________
if i never try anything, i never learn anything..
if i never take a risk, i stay where i am..
Back to top
View user's profile Send private message
craftyc
Guru
Guru


Joined: 23 May 2002
Posts: 443
Location: Behind You.

PostPosted: Sat Aug 31, 2002 9:05 am    Post subject: Reply with quote

I would have thought that the best thing to do is start in the deep end. That way it would be easier learning other languages. I think I will still start to learn C first because it is a language that I will have to learn anyway.
_________________
Postcount ++
Back to top
View user's profile Send private message
huhmz
n00b
n00b


Joined: 16 Aug 2002
Posts: 16

PostPosted: Sun Sep 01, 2002 10:24 am    Post subject: I would suggest starting with perl Reply with quote

I would suggest starting with perl because it is just soooo easy, after only 20 minutes you can do some pretty nifty things (compared to what you could do after 20 min in C). It is important that its easy to comprehend in the beginning so one does not lose intrest. After you understand functions and other standard things, move on to python and try to understand Obejct Oriented programming (you can do OO in perl but its counter intuitve)
Back to top
View user's profile Send private message
masseya
Bodhisattva
Bodhisattva


Joined: 17 Apr 2002
Posts: 2602
Location: Raleigh, NC

PostPosted: Tue Sep 03, 2002 6:21 am    Post subject: Reply with quote

Well, I don't want to get into a python vs. perl argument here, but let me just say that the fact that there's very little that's counter intuitive in python is the number one reason that I recommend it over something like perl where there's more than one way to screw it up (tm). I also don't think that starting in the deep end is necessary because it's very frustrating to be held back from learning concepts by something as dumb as a squiggly brace. The only real problem that I see with starting with a language like python is that you won't have the motivation to learn the arcane parts of very important languages like C and Perl.
_________________
if i never try anything, i never learn anything..
if i never take a risk, i stay where i am..
Back to top
View user's profile Send private message
Snoopster77
n00b
n00b


Joined: 15 Jul 2002
Posts: 25
Location: Newcastle, Australia

PostPosted: Tue Sep 03, 2002 10:01 am    Post subject: Reply with quote

You really have to look at what you want to do with your programming skills. It seems like you are just starting out. Do you want to be a Linux hacker? Is this going to be a future job?

Here's my two cents. If you wanna be a Linux hacker or have a job to do with linux programming then learn C then read a book on object-oriented programming and then learn C++. From here you should have no trouble picking up Java or *cough* C# or any other O-O programming language eg. PHP. Another essential tool for linux programming would be a scripting language. Since I don't know much about either Perl or Python (I'm not a linux hacker, just muck around with it) I can't say which would be better.

If you aren't particularly interested in hacking linux but would like to be more marketable I would start straight into C++ and Java. Object oriented programming languages are still popular. As tempting as it may be please stay away from anything BASIC. After mucking around with C++ and Java I would look also into server side scripting languages such as PHP, Cold Fusion, JSP, *cough* ASP, Perl and the likes since these are gaining in popularity.

As for learning assembly, I would not bother. Yes it will help you understand what your code will compile into but it seems to me to be a lot of effort just to learn how to code better in C/C++. There are plenty of resources out there to learn how to make your code more efficient.
Back to top
View user's profile Send private message
jay
l33t
l33t


Joined: 08 May 2002
Posts: 980

PostPosted: Tue Sep 03, 2002 10:46 am    Post subject: Reply with quote

I would start with perl, python or php ... first you'll get some good results after a few mins of hacking and you'll bee hooked. And I think the systax of php is quite related to C, so shifting later isn't a big bunch.
BTW I started with QBASIC, moved over PASCAL to HTML, Python and PHP for toing quick scripting.
_________________
Do you want your posessions identified? [ynq] (n)
Back to top
View user's profile Send private message
craftyc
Guru
Guru


Joined: 23 May 2002
Posts: 443
Location: Behind You.

PostPosted: Tue Sep 03, 2002 11:38 am    Post subject: Reply with quote

I would like to do Programming as a profession and for Kernel hacking.

Most of you suggested that python would be an ideal starting place. Then moving on to C, then C++, then whatever else tickles my fancy. I think I will stick to this advise (You're all more knowledgable about this subject than me).

Thanks for all your help.
_________________
Postcount ++
Back to top
View user's profile Send private message
Snoopster77
n00b
n00b


Joined: 15 Jul 2002
Posts: 25
Location: Newcastle, Australia

PostPosted: Tue Sep 03, 2002 9:33 pm    Post subject: Reply with quote

While craftyc has already made a decision (and not a bad one I guess) I still feel compelled to disagree with jay (no offense). While the syntax of php is similar to C/C++ I don't think it is good for teaching programming skills. It has next to no type checking and you can do really weird things with variables and variable names.

As a teaching tool I would stick to C/C++ or Java as I feel these languages teach good skills. I can't comment on python, don't know it myself. I guess I just think there should be a stronger emphasis on learning good skills than getting quick results. Once the skills are there, switching to a different language is relatively harmless, just learning a new syntax and funny little quirks usually.
Back to top
View user's profile Send private message
J4Y
n00b
n00b


Joined: 29 Aug 2002
Posts: 14
Location: Toronto

PostPosted: Wed Sep 04, 2002 11:39 am    Post subject: PHP for me! Reply with quote

I was debating the same thing up untill about a month ago.. The only "programming" I know is HTML... I decided on PHP. Here is why.... You can create websites with it, you can create scripts for your system with it and apparenly it is similar enough to C that if/when you want to learn that it will be easier.
Back to top
View user's profile Send private message
pizen
Apprentice
Apprentice


Joined: 23 Jun 2002
Posts: 213
Location: Atlanta, GA, USA

PostPosted: Wed Sep 04, 2002 12:58 pm    Post subject: Reply with quote

phong wrote:
Oh, and the defacto C reference is of course, K&R, which should reside on every hacker's bookshelf.


Very true. K&R sits on my shelf next to my O'Reilly books. If you want to know C, this is a must-have.
Back to top
View user's profile Send private message
ebrostig
Bodhisattva
Bodhisattva


Joined: 20 Jul 2002
Posts: 3152
Location: Orlando, Fl

PostPosted: Wed Sep 04, 2002 10:52 pm    Post subject: Re: PHP for me! Reply with quote

J4Y wrote:
I was debating the same thing up untill about a month ago.. The only "programming" I know is HTML... I decided on PHP. Here is why.... You can create websites with it, you can create scripts for your system with it and apparenly it is similar enough to C that if/when you want to learn that it will be easier.

Hmmm...
The choice of language to program in, depends on your interests and your (future?) job.

Another good choice that could really land you some well paid jobs, is to learn SQL and database programming. Show me a single compnay who is not relying on some form of a database to run their business on.

Personally, I have not bothered to learn anything related to web programming since:
1. I'm not really interested
2. I never make web pages
3. The ones out there are ugly enough already!

But I have programmed in : Assembly, C, basic, fortran, prolog, pascal, delphi, APL, modula, forth and of course SQL. Plus a few more that are really obscure and not in use anymore :-)

Learning a new language is a lot like learning to actually *speak* a new language. The words are different, the structure of a sentence is different, but once you know how to use one language, it is quite easy to learn a new one. The hardest part is to learn to talk (see how long a child struggles learning to use a language), once you learn how-to, it is easy. Same with programming.

Erik
Back to top
View user's profile Send private message
yucao89
Tux's lil' helper
Tux's lil' helper


Joined: 26 Feb 2003
Posts: 124
Location: madrid

PostPosted: Thu Feb 27, 2003 12:08 pm    Post subject: Java is the language Reply with quote

Java is the language you should learn! because it is OOP Also it is good because it syntax are like C++, Java's network API and swing are very useful and very complicated. Java is the language for linux and windows and it represents future. But if you dont have any clue of programming language please start with HTML and then Java or C or C++

thanks and also see my link on JAva (Search why learning java)
Back to top
View user's profile Send private message
-JeaN-
Apprentice
Apprentice


Joined: 25 Nov 2002
Posts: 211
Location: PaRiS :D

PostPosted: Thu Feb 27, 2003 2:53 pm    Post subject: Reply with quote

IMHO, starting with C is a very good thing and i wish you good luck.

With C you have lot of interesting programming areas : variable type, preprocessor instructions, structures, functions, optimisation of algorithms, managing memory, using pointers, having good commenting habits cause anyways if you don't comment you get lost :)

You don't have then the OO part, but it's just an evolution of all this, and I personnally think that when you know what a structure and a function is you will have not much problems to understand what an object is, even if learning to "think in OO" is another step to take.

Also a good point for C is that you can include ASM inside which is the language you'll love or not, anyways as someone said already in this thread ASM won't be very usefull cause most of the time writting something in C will be faster than writing it in ASM and you won't be able to optimize your ASM to make it faster.

You can also use a wide range of written librairies. And of course since lot of programs are written in C, you can learn from them then ;)
My point is that when you'll be able to handle C language, then you will be able to handle any other. With some adaptation time, but it'll be ok.

Learning Java first would be a mistake in my opinion, cause learning java is more about learning the WIDE range of functions and classes included than learning the real programming skills.

Try to do some basic programs in console mode, like managing a text database, or even doing an ASCII race game for a start :)

My piece of advice ;)
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Off the Wall All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum