LinuxQuestions.org
Review your favorite Linux distribution.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 11-03-2007, 03:12 AM   #1
SBN
Member
 
Registered: Jul 2006
Distribution: UBUNTU, CentOS, FEDORA 8
Posts: 474

Rep: Reputation: 30
Talking Programming Language for starters


Hey guys for a aspiring computer programmer that doesnt know anything about computer programming (yet) what programming language should you recommend to start with to learn?
 
Old 11-03-2007, 05:08 AM   #2
Nylex
LQ Addict
 
Registered: Jul 2003
Location: London, UK
Distribution: Slackware
Posts: 7,464

Rep: Reputation: Disabled
Any? Perhaps language may not make too much of a difference (unless of course you actually know what kinds of things you want to do with programming) and it may be more about getting a good book. Java, C++, but people will likely disagree with me (and I don't have any real reason for suggesting these, other than those being the languages I've used most). Good books for beginners for both of these languages are written by Ivor Horton IMO ("Beginning Java 2", Wrox and "Beginning C++: The Complete Language", Apress).
 
Old 11-03-2007, 08:49 AM   #3
LinuxNoob75
Member
 
Registered: Jan 2007
Posts: 90

Rep: Reputation: 15
hey-
I reccommend Python.
Python-Python's a really good beginner language. It is cross-platform, works with GLADE to design GUI's and is widely used on Linux.
Most distros come with Python.
Go to a terminal, and type python
and bang, its there. Don't worry though, Python's not just a scripting language, you can create applications with .py files.

http://www.poromenos.org/tutorials/python
http://docs.python.org/tut/

Also, I recommend checking out this app:
http://blakecmartin.googlepages.com/...nternet.tar.gz

Open it, and navigate to the .py file. It will help you understand the power of python, and how a lot of things work.
 
Old 11-03-2007, 11:52 AM   #4
veerain
Senior Member
 
Registered: Mar 2005
Location: Earth bound to Helios
Distribution: Custom
Posts: 2,524

Rep: Reputation: 319Reputation: 319Reputation: 319Reputation: 319
There is even PERL Language

[removed link]

Last edited by crabboy; 11-14-2007 at 09:51 PM. Reason: removed spamming link
 
Old 11-03-2007, 01:06 PM   #5
theNbomr
LQ 5k Club
 
Registered: Aug 2005
Distribution: OpenSuse, Fedora, Redhat, Debian
Posts: 5,399
Blog Entries: 2

Rep: Reputation: 908Reputation: 908Reputation: 908Reputation: 908Reputation: 908Reputation: 908Reputation: 908Reputation: 908
What kinds of this do you already do with computers? Do you do any kind of system admin work? Office productivity? Web browsing & e-mail only? Gaming? Student reseach? Other? Programming will probably seem fairly pointless and un-motivating unless you either get some tangible value out of it, or you are simply engaged by the creative/interactive aspect of programming (and when someone asks the kind of question that you did, it probably means you aren't). What you hope to get out of it, and to a large extent how much you are prepared to put into it, should dictate the type of language you first learn.
You really need to pick a small, probably really small, project to work on to get started. Be prepared to spend about 100 times as much time & effort to accomplish the task as it would ordinarily be worth. Use the goal as a way of keeping on track, but measure the success of the project by how much you learn along the way. Be prepared to encounter obstacles that seem to defy every solution.
When you have decided on the language best suited to your purpose, gather resources: books especially. I've self taught myself several languages, and none were ever covered adequately in a single book. You will need, at a minimum, three books. The first, a low-level tutorial style book that teaches the very basic fundamentals of programming in general as well as the fundamentals of the language you choose. You will need a more thorough, advanced, text that covers as much detail as possible. You will want a reference manual that contains sorted lists of the language elements and the associated details; a sort of dictionary or encyclopedia of the language. You will want all three of these right away. The second one, a thorough advanced text, may require more than one book to thoroughly cover everything well, especially if you choose a 'big' language such as Java.
You will want to identify online resources dedicated to the language. These should contain tutorial content, reference content, Q&A style forums, working source code, and related products such as add-on libraries. Sometimes you can encounter online mentors that are willing to hold your hand a bit, and get you past the initial hurdles. A live-in-the-flesh mentor with a could understanding of the language can be a huge help. Consider enrolling in a formal class, if you are really serious about learning your first language.
You will need to gather a set of developers tools to use. At a minimum, you will want some sort of text editor, the language compiler/interpreter/assembler/etc, and probably a small collection of related tools, such as a debugger, maybe some way of moving your code to an alternative platform. Often this collection of tools is described as a toolchain, and sometimes there are tool sets integrated into a single platform called and Integrated Development Environment. Eclipse is an example of one of these. I strongly believe that one should avoid these in the very earliest stages of learning, as those tools themselves impose a challenging learning curve, and it is often confusing to the beginner whether an obstacle is a purely language and programming issue, or whether there is a lack of understanding of the IDE tool.

So, what do you want to program?

--- rod.
 
Old 11-03-2007, 02:53 PM   #6
Pearlseattle
Member
 
Registered: Aug 2007
Location: Zurich, Switzerland
Distribution: Gentoo
Posts: 999

Rep: Reputation: 142Reputation: 142
I would say that, if you want first to have a good base ti start with, to go to C. That was the first language I learned and it really helped me learning afterwards C++, OpenGL, PHP, VBS and as well the basic memory management & performance optimization which I later used for Oracle DBs and hardware analysis & benchmarking & recommandations. I used the book "Absolute beginner's guide to C", which was very funny to read and didn't have a steep learning rate http://www.amazon.com/Absolute-Begin...4119240&sr=1-1.
It was published in 1994 but has been the best computer-language-book I ever read (and I didn't read only that one ). You'll probably have to use another compiler (probably Microsoft Visual C++) than the ones mentioned in there, but everything else is still up-to-date.
Have fun!

Last edited by Pearlseattle; 11-03-2007 at 02:55 PM.
 
Old 11-04-2007, 08:20 PM   #7
SBN
Member
 
Registered: Jul 2006
Distribution: UBUNTU, CentOS, FEDORA 8
Posts: 474

Original Poster
Rep: Reputation: 30
Talking

thank guys....

Quote:
So, what do you want to program?
well im very much interested in software programming which involves integration to electronic devices.
 
Old 11-04-2007, 09:35 PM   #8
YolLuTRaC
LQ Newbie
 
Registered: Nov 2007
Posts: 4

Rep: Reputation: 0
Hey!

Here are some things you need to know...

C: One of the fastest low lvl programming language. i.e. you have to define everything, deal with memory and the pissing off seg fault which don't say anything about the actual error. Other than that it's a great language and I love it...

C++: Basically the same as C but object oriented. It is a little slower and you need less to define everything and deal with memory. So a special + for C++ since it is slightly easier and much more fun on the graphical interface side.

Java: The one that everyone likes for some reason but really is a carbon copy of C++ without the memory dealing part... Did I just say that! Oups...

Python: Awesome non-quick high-lvl programming language where you don't have to specify anything and get to a nice looking graphical interface very quickly. Also you might want to have a look at ironpython since it's much quicker and pretty much the same difficulty-wise...

FORTRAN: My old friend which is nothing like any of the languages above. It is one of the first language ever maid but still is used in many libraries of C/C++/C#/Java/Python/... So I guess for the logistics of programming, knowing FORTRAN would be a good start to understand how programming works. You can learn it really quickly and it is farely well documented. After that well choose one of the programming language above for your needs.

Finally, after you are settled and become good at programming in general, you might as well google programming language and figure out one that might fit more you needs. I personally work with C/C++ and the ROOT framework as a scientist I need speed for heavy computation so have fun looking!!

YolLuTRaC
 
Old 11-05-2007, 09:26 AM   #9
jiml8
Senior Member
 
Registered: Sep 2003
Posts: 3,171

Rep: Reputation: 116Reputation: 116
Integration to electronic devices tends to be low-level coding. To do it in Linux, you have to know C. You also should know assembler. If your electronic device needs to be programmed, you need to know its language as well (typically C).

After you have integrated the device (which is to say you have written device driver(s) that permit communication between your host computer and your device), then you can build your user interface and user level processing in any language or combination of languages that is suitable.
 
Old 11-05-2007, 12:15 PM   #10
theNbomr
LQ 5k Club
 
Registered: Aug 2005
Distribution: OpenSuse, Fedora, Redhat, Debian
Posts: 5,399
Blog Entries: 2

Rep: Reputation: 908Reputation: 908Reputation: 908Reputation: 908Reputation: 908Reputation: 908Reputation: 908Reputation: 908
Quote:
Originally Posted by SBN View Post
thank guys....

well im very much interested in software programming which involves integration to electronic devices.
Your interest probably falls in or near the category of embedded systems style programming, where C would be the most commonly used language, by far. C is still a very useful language to know for almost any purpose, so it sounds like that should be your first choice. You probably should start learning the language by picking a few non-hardware oriented projects first. Avoid projects where a user interface is a major component, instead focusing on things like file IO, maybe a little networking, and lots of string handling, where the use of pointers is important. If you have some particular hardware interface in mind, consider writing some utility that manages data sent to or read from the device, if applicable. I would suggest learning a little assembler programming as well. The C language has been described as a high-level assembler language, and I think many concepts which are fundamental to C can be best grasped with an understanding of the underlying assembler concepts. Set up a DOS box, and hack away at low-level stuff with NASM.
Good luck in your venture.
--- rod.
 
Old 11-06-2007, 12:02 AM   #11
SBN
Member
 
Registered: Jul 2006
Distribution: UBUNTU, CentOS, FEDORA 8
Posts: 474

Original Poster
Rep: Reputation: 30
Talking

thanks guys.... i think i will start first with C, although its my understanding that its a very old language but somehow its still very popular and effective.
 
Old 11-06-2007, 12:36 AM   #12
SBN
Member
 
Registered: Jul 2006
Distribution: UBUNTU, CentOS, FEDORA 8
Posts: 474

Original Poster
Rep: Reputation: 30
Also what do i need so that i can program with C in windows and linux?
 
Old 11-06-2007, 12:44 AM   #13
YolLuTRaC
LQ Newbie
 
Registered: Nov 2007
Posts: 4

Rep: Reputation: 0
Well for C you will need gcc I guess.. Do not get the latest version though. Also for assembly coding you might want to have a look at mips assembly and not intel's since it's much nicer and all the basics are there. Seriously start with C though as assembly is nasty and really low lvl programming approching the 011100101011100101000101 kindda thing. Enjoy!

YolLuTRaC
 
Old 11-06-2007, 01:34 AM   #14
SBN
Member
 
Registered: Jul 2006
Distribution: UBUNTU, CentOS, FEDORA 8
Posts: 474

Original Poster
Rep: Reputation: 30
is Turbo C same as C programming?
 
Old 11-06-2007, 09:14 AM   #15
theNbomr
LQ 5k Club
 
Registered: Aug 2005
Distribution: OpenSuse, Fedora, Redhat, Debian
Posts: 5,399
Blog Entries: 2

Rep: Reputation: 908Reputation: 908Reputation: 908Reputation: 908Reputation: 908Reputation: 908Reputation: 908Reputation: 908
Yes, Turbo C is an older flavor of C. Completely adequate for learning the language, although it has a lot of DOS-specific & PC-specific library functions, that are not at all portable. Most complete Linux distros will have gcc and enough related tools to start learning. With all due respect to YolLuTRaC, learning any assembler for which you do not have a target system is a bit pointless, and most people do not have access to a MIPS based system. Yes, assembler language is very low-level, but if you are interested in programming at the hardware level, it is relevant, as well as instructive. I would advise against learning C in a Windows-specific development environment, as very much of what you will be learning is the Windows API, which will tend to confuse you about what is a language issue, and what is a Windows API/GUI issue.
--- rod.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
which programming language is used to do tcp/ip programming?? gajaykrishnan Linux - Networking 9 12-21-2012 05:16 AM
What programming language do you know? zikhermm Programming 11 09-15-2001 10:51 PM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

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

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration