[SOLVED] Good first programming language to learn.
ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Typical The OP is probably more confused than he/she was before starting this thread.
asipper, based on the fact that you provided no additional information whatsoever as to what kind of programming you're talking about, it's kind of hard to answer your questions. Having said that, perhaps you could read something about Python or C to see where they are typically used and decide for yourself. Either choice is good in its own way.
IMO, you should quit the hunt for the "best" language,
and start the search for the "kind" of software you
would like to develop.
Then, when you decide that you want to develop X kind of
softwares in future, you should start a new thread for asking
probably "Which is the best language for developing X software?"
Also, instead of focusing on a language until you get your
goal decided, IMO, it is better to study the concepts like
object oriented programming, design patterns, etc. and
think about the areas where you can actually apply them.
IMO, you'll be able to do all that once you decide which
software to develop.
Right now since you don't have any goal, it a probability (IMO)
that you won't be able to figure out what to use when.
IMO, it is better to find a problem first and then a solution,
rather than doing it vice versa.
IMO, you should quit the hunt for the "best" language,
and start the search for the "kind" of software you
would like to develop.
Good idea - searching for "best language" is a common newbie mistake anyway - people waste weeks searching for "the best language", asking questions instead of using that time to learn ANYTHING.
Quote:
Originally Posted by Anisha Kaul
Also, instead of focusing on a language until you get your
goal decided, IMO, it is better to study the concepts like
object oriented programming, design patterns, etc.
That'll be a bad idea. Concepts you listed are very complex and are not suitable for a newbie in any way. Somebody without previous programming experience should learn loops, variables, functions and conditionals first. For some people learning even that is very difficult. I still remember conversation I overheard few years ago - two students had real trouble understanding what "integer" is and how it is different from "float". For me it was obvious. For them it wasn't.
Concepts you listed are very complex and are not suitable for a newbie in any way.
IMO, it also depends on the book/material you are referring to, while
studying those concepts. Example: I could never understand the AStar
algorithm during the MCA period, and it took me exactly 6 minutes to
understand it few months back (since accidentally I had hit upon a
power point presentation which had explained it ONLY diagrammatically).
Also, for example the under hood working of virtual functions starting
making sense only after I read it from the Thinking in C++.
Of course the concepts are difficult but having a "proper" reading
material helps tremendously, IMO.
Quote:
Originally Posted by asipper
To get better answers.
To get better answers, it is better to write a NEW post, explain the
situation in more detail, question if you don't understand the writer's
reasoning, and thank the people who helped you so far.
Editing an old post silently is UNhelpful in the current case.
Last edited by Aquarius_Girl; 11-07-2011 at 02:24 AM.
IMO, it also depends on the book/material you are referring to while
studying those concepts.
IMO, you greatly overestimate knowledge/abilities of a newbie. Metaphorically speaking, you're asking a person that hasn't yet learned how to walk to do some acrobatics. There's time for everything, and knowledge you mentioned requires solid foundation - understanding of variables, base data types (int/float/string/char) and flow control. Without that there will be no OOP and no design patterns. The perfect language to get this kind of understanding is assembler. The problem is that it shouldn't be an IA32/64 assembler, but some kind of "toy" assembler, that has small number of commands. There should be something like that available, but I can't recommend anything specific - programmable calculator, perhaps? Or Z80/8086 assembler? Or it should be possible to learn same thing using C or some kind of BASIC, although, but it'll probably take longer. If assembler is "too scary", sticking with C for a start might be a good idea.
Quote:
Originally Posted by Anisha Kaul
AStar algorithm during the MCA period
You weren't learning "AStar algorithm" at the first day you ever run a compiler, right? There's no reason to "run in front of the train".
Also I heard python is a bad first language because the syntax is a lot different then other languages so it makes it hard to switch.
As Anisha says, you shouldn't just edit your first post as people won't be aware (I only realised because of her post). I don't think syntax is a major issue. The different elements that programming languages contain (control statements, loops, arrays, for example) are common to all languages and while the syntax is different, you'll more or less be able to work out what's going on. Once you've learnt one language, you'll find learning another one isn't too hard.
Also, there's a typo in your post: you mean "than", not "then".
knowledge you mentioned requires solid foundation - understanding of variables, base data types (int/float/string/char) and flow control. Without that there will be no OOP and no design patterns.
I agree. I realize even for learning OOP concepts and DPs, you need to "visualize"
things. You need to "visualize" the functions, variables, and the flow. Even the
easiest of the books (w.r.t topics I mentioned) show examples pertaining to
"programming" only.
As you said, I have also heard that those who know the Assembly language
can understand the errors of the higher level languages better.
Quote:
Originally Posted by SigTerm
You weren't learning "AStar algorithm" at the first day you ever run a compiler, right?
Right, and I was learning C, and I had no idea why I was being "made to"
learn it. Probably learning AStar before C would have been more helpful.
At least, I could have implemented AStar in C then. ;p
We were actually made to learn Foxpro, C, Qbasic, Vbasic, Java, etc. without
even making us realize why the hell we were learning them (BCA)!!
Last edited by Aquarius_Girl; 11-07-2011 at 01:46 AM.
In general,
people have made two important points.
(1) Use what others in your area/group use (post #5)
Quote:
And the best programming language to learn is the one that some people you know also know or are learning right now :-)
(2) In any language learn the basic skills at two levels
(1) Very basic skills like loops, etc.
(2) Slightly advanced like set theory, regular expressions, etc
To all non-Indians.
MCA is Master Of Computer Applications. Likewise BCA is bachelor of Computer Applications. BCA is under-grduate and MCA is graduate school. Other similar Indian degrees are M.Sc (Master of Science) and B.Sc (Bachelor of Science).
What's a good first programming to learn? Is C good? I'm thinking it's a good first language because it's powerful and the syntax is like C++ and I think java? Also what are good books to learn it. Also I only have Linux/Mac machines so I can't learn Visual Basic.
EDIT:I really just want to have a fun easy language that is useful. Also I heard python is a bad first language because the syntax is a lot different than other languages so it makes it hard to switch.
I.e., in a sense, you are asking a wrong question.
OTOH, starting with something like "C" is a good thing because you from the getgo realize what the costs are. And, if we are talking about "C", always have its standard by your side: http://www.open-std.org/JTC1/SC22/wg...docs/n1124.pdf - it is surprisingly user friendly, though it does not replace a book on programming. OTOH, the standard is the ultimate truth regarding the language.
I started by learning a Object oriented programming language (C++), which I think was wrong.
I would start by learning C, Then get the understanding of Assembly, then move on to a Functional programming language (HASKELL for instance) and Then a Object Oriented programming language I would recommend Ruby, and then (if need) a script language (Just please don FLASH)
In general,
people have made two important points.
(1) Use what others in your area/group use (post #5)
OK
It's a valid point, however, I took a slightly different approach. I don't have any computer degree and have a relatively satisfying job (unrelated to programming or Linux). I promised myself that before I die, I'll become a real expert in a programming language. If it eventually becomes my job, great. If not, still good. I asked myself: do I want to become the 1000000th perl/C/Python, etc. developer in London? I started reading on Common Lisp and thought why not? So far I've been enjoying it. I don't have much time for study though so my progress is rather slow.
@Anisha Kaul By to get better answers I meant to make it more detailed. I'm really sorry it's so vague I really don't know what I want to do with programming. I think that maybe I'll get an idea when I learn a language. And from now on I'll put it into separate posts.
Well, since you're not aiming for a univerity degree, I'd start with a "...for dummies" book which are
usually more pleasant and lightweight to read that the scientific stuff. http://www.dummies.com/store/product...Id-322467.html
I never complained on the post's vagueness. If you are NOT a native
English speaker and can't understand the posts, I think it is better
to ask rather than assume.
Quote:
Originally Posted by asipper
I really don't know what I want to do with programming.
Perhaps reading and understanding the post 17 and its follow up
posts, would help.
But as they say, you can just take a horse to water, you can't make him drink.
Last edited by Aquarius_Girl; 11-07-2011 at 05:42 PM.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.