Hey all, I'm thinking of going into programming, self-studying it and stuff. Currently, I'm a high schooler in a school with no programming classes, and I want to know if C is a good place to start. I heard that once you learn C, other languages would be easier to learn - is that true? Anyways, if anyone has some useful books/websites for learning programming, I'll appreciate it if you share it with me. Thanks in advance!
Python.
why do people insist on learning c/c++ as their first programming language? to me it seems like a kid learning calculus before algebra. it's a really unforgiving language that would demotivate anyone quickly. also making a UI app in c/c++ for a beginner is never going to happen so people end up just making little test console apps and never doing anything useful. again very demotivating for someone trying to get into programming.
if you want to learn programming start with javascript and firebug. why? because you already have everything you need to get started installed. also it's a forgiving language thats easy to debug. you dont need to bother with compiler settings, pointers, deployment, packaging or any of that. you can get your feet wet with programming, make graphical apps, without getting as fustrated as you would making something much less cool with c/c++.
when you become good at javascript you'll be ready to graduate to learn the what it means when objects are allocated on the stack vs. heap, and when you're ready to learn pointers and manual memory management it will make a whole lot more sense. learning programming is less about what language and more about logic. most programming languages boil down to the same pieces - methods, variables, if, else, while, statements. it's funny really how trivial it is to move to pretty much any programming language after getting the hang of it.
you want to make 3d games? the latest web browsers are supporting webGL now. people have ported quake to javascript and it runs blazingly fast. so you can even learn game programming without dealing with c/c++ bullshit right away.
so that's my rant. I see so many of you guys learning c/c++ as your first language and feel bad for you because its a long hard road to make anything really usable with it.
a little background ive been programming for 12 years professionally. c/c++, c#, java, obj-c, php, python, etc.. it's a really fun career and you can make a ton of $$ with it. i had a really hard time teaching myself when i started (c++/mfc) and most of the time was wasted on compiler bs, debugging unforgiving memory bugs, and deployment issues, instead of actually doing some productive programming.
If you really are an absolute beginner, why not Lua? Its dynamically typed, and there is only one aggregate datatype, the table, which you can use for lists, arrays, etc.
for i=99,0,-1 do
print(i.." bottles of beer on the wall, "..i.." bottles of beer!")
end
> why not Lua?
because arrays start at 1.
Actually nothing to worry about! programming, which I do for a living, is like learning a simple language. you probably have a vocabulary of ten thousand to one hundred thousand words or more! In programming you'll maybe learn fifty or one hundred more. the rest of it is about variables, counting and testing conditions.
If you are novice to programming then you should start from <a href="http://www.cprogrammingexpert.com/"><b>C Programming Language</b></a> .This is the most basic programming language and not very tough.
>>2
What they said. Python is easy to pick up and learn programming concepts, and powerful enough to be useful as a main language for most projects.
The most important thing in learning programming is to learn to think like a programmer, regardless on what language you use. Programming languages are in general (with a few exotic exceptions) all the same.
Regarding Python, Lua or e.g. Perl, personally I consider them about as good as Basic which few people consider learning nowadays. They're still used, there's a lot written in them and they provide some powerful tools but that's about it, they're pulled down by their aged concepts. Unless you need to use them right away I recommend starting with them later when you already know how to write a good program - otherwise the possibilities they offer will pull you the wrong way.
Personally I think Java is the best language for beginners.
>>8
You called Python, Lua, or "e.g. Perl" about as good as Basic then you went on to recommend Java as a first language. Ha.
Ha, ha. HAHHAAAHHAHAHAHAHA
OH my!
I echo the views that starting with C is a bad idea and you'd be better off with python or javascript.
Here's a javascript interpreter that makes learning it easier:
Starting with C is the worst idea ever.
Depending on what you want to do, I recommend:
Processing [makes it easy to draw pictures]
Python
Scheme or Clojure
Haskell
Groovy
Perl's syntax is too funky for 2011
C was the second language I learned at university
start with some Java or Python OP
OCaml is also quite a cool language.
Aren't all interpreted languages but Common Lisp technically dumbed down versions of Common Lisp?
>>18
In the same way that every language is a more complicated implementation of Brainfuck.
>>16
+1, Python, Scheme, and Ruby also have interactive interpreters, allowing immediate feedback. Also, SICP for Scheme: http://mitpress.mit.edu/sicp/
Processing's also pretty great for learning graphics programming
OP, have a look at http://codecademy.com
I recommend you to start with Racket and SICP. It still is the best introduction to programming, by far. Also, learning C isn't a terrible idea, it's only unnecessarily hard.
Actually, I'm learning C right now. I've always been afraid of C, because of the low-level memory management and whatnot.
Truth is, C is a nice language, and it is not that hard to pick up. You'll learn the basics of programming just fine with it, just don't expect to do games and applications than run on anything else than the command line in a few months.
Also, reading the K&R book is a must for anyone attempting to learn C.
think first what you want to do and then chose language
curently c is using for programming of basic low level things like os and compilers etc
i recomend you skip c and do java which is more universal or c# because from that what i see there is a lot of job for people who do c#
A very bad idea. Start with Python, Ruby.
ะก/C++ are good in some cases because they allow low-level programming. If you want to develop something perfomance-critical (such as games or mathematical modeling) C will be suitable. Also overwhelming majority of middleware is developed to be binded to C/C++ programs.
In other cases C is too verbose and unsafe.
P.S. Python and Ruby are cool but their performance is too poor for real world. For example Google freezes python projects now. Functional programming is interesting. Now I enjoy haskell after some years of C coding.
I personally think that C is a good starting language, and I started with C myself. It's unforgiving, but if you really want to learn to program and you're capable of motivating yourself it lets you really start to understand whats going on "under the hood" so to speak.
The being said, it's not for everyone. I'd personally recommend using Ruby, or maybe Python (though I personally don't like the way Python works) as a starting point and then once you familiarize yourself with one of them, if you still feel like learning C picking up something like K&R and reading through it.
I personally think you should start with C++. Skip the C and jump to C++. It is only a revamping of C after all.
If you want a job as a programmer, I recommend you learn C#.NET, ASP.NET, and T-SQL or another SQL dialect. Most businesses will want a C#.NET developer who can write programs and web services that will manipulate or update databases. They also want people who can write server-client applications and multi-threading is a big deal.
I personally enjoy C++ because of the control it gives me. I wrote my own language with C++. It is a very light-weight, object-oriented, and high-level scripting language. Link to the blog is in my name for those who are interested.
Good luck programming. I am self-taught in C++. You can do anything if you put your mind to it.
>Skip the C and jump to C++. It is only a revamping of C after all.
I'm just going to go ahead and assume you've never used C.
C and C++ are world apart.
From my comprehension, they are not far apart. C++ is built on C's concept. Hence the name C=C+1; The core of C is Pointer, and C++ expands the structure of C's object. A lot of scripts borrows this method.
For the condolence of Dennis Ritchie, it is time to study C.
By the way, Kintaro Oe learned C in one week.
>From my comprehension, they are not far apart.
If you think this way you doesn't know the power of C++ fully. Just look at stl and boost, they aren't close to C at all.
>Just look at stl and boost, they aren't close to C at all.
STL and Boost are both terrible and you should feel terrible for using them.
>STL and Boost are both terrible
Maybe boost is too complicated, but STL is the part of language. Don't stay in 90's.
I'd start with java. Its 'similar' to c++ in terms of syntax, but it is much more forgiving in terms of how it handles memory and how it compiles. C/C++ are a more powerful languages, but for a beginner it doesn't really matter. You have to learn the basic constructs before you can do anything anyway so early on the functionality is about the same.
The only thing I'm most concerned about for the original poster is that they are somewhat timid to try to learn something. It may be that they need to start with another language in order to be more productive in doing the things that they want to do, but what would it cost them to find that out themselves the hard way? Probably not much at all. The cost in stepping back and worrying if it is going to be hard is going to be more, in lost time, and in perhaps cutting them off from their potential.
Java.
Start with some script like Perl or Python, then go to C.