I've been teaching myself C for a little while and I plan to study programming in university. I was wondering what languages I should try next. I'd rather avoid web development if I can. I saw Microsoft's express books on VB and C# and was thinking of getting one of those. If you guys could suggest some books (titles, authors or publishers) that I could easily find in a book store like Borders (Chapters for me here in Canada though) I would greatly appreciate your help and someday I may be posting here a little bit wiser because of it.
Name:
Anonymous2009-06-08 15:58
S_C_ suggestion in 3.. 2..
Name:
Anonymous2009-06-08 15:59
I'd like to tell you otherwise, but you'd probably benefit from web programming. I recommend learning a scripting language like Python(my preference), Ruby, Perl etc. A lot of people here are going to recommend functional languages like Scheme or Haskell, that, while awesome, are just going to confuse you if you're not prepared to work at it.
Just as a note, if anyone knows any good free sites for learning or books like I mentioned just say so, just remember what I said about being easy to find. Also, if I don't answer for the next several hours it's because I'm at summer school. (need to do that Cal2 to get into compsci >_<) So I look forward to seeing what you guys suggest when I get back.
>>8
No longer using it as the introductory programming languages doesn't necessarily mean they've stopped using it altogether. I believe they still use it in some later courses. Your argument that lisp is out of date is likewise ill-conceived. The fact that people still use it 50 years after it was created is a testament to the original design of lisp, the same can be said of Fortran to a degree. Lisp introduced many ideas which we now take for granted and still has ideas that left to be discovered by the mainstream (symbols and macros). Is Unix out of date because of it's age? It turns 40 this year and continues to be developed and expanded. If you don't like lisp, no-one is forcing you to use it, but we don't have smug lisp weenies (and smug smalltalke weenies) for no reason
Name:
Anonymous2009-06-08 19:01
>>8
You're seriously confused if you think SICP is about LISP. SICP is about the structure and computation of computer programs, not LISP. The medium that is used to describe these computer programs is a LISP-like variant called Scheme.
>>11
As I said before, SICP isn't about LISP, but does make use Scheme. You have faulty logic. Computer science isn't about computers in the same sense that physics is not really about particle accelerators. Biology is not really about the microscope and petri dishes. SICP isn't about LISP. You need to actually see that computer, so-called science, has a lot in common with magic and is what you will see that in this course.
Amazon says so, >>12-san. I liked your post though.
Name:
Portaljacker2009-06-08 22:38
The argument is nice but doesn't really get me anywhere. >_<
Name:
Anonymous2009-06-08 22:54
>>15
The point is that if you want to go anywhere, you must read SICP.
Name:
Portaljacker2009-06-08 23:18
Anything for book suggestions the way I asked? :P I'm gonna have a ton of gift card money and I might as well put it to use. :P
Name:
Portaljacker2009-06-08 23:36
Ok, not a ton, but enough for a computer book or two.
Name:
Anonymous2009-06-09 1:30
>I've been teaching myself C for a little while and I plan to study programming in university. I was wondering what languages I should try next.
Looks like you shouldn't bother with other languages yet. Learn C properly.(fagget!)
If you program in C and you haven't read K&R you should.
Name:
Anonymous2009-06-09 10:57
Languages worth knowing: Scheme: lets you branch out into LISP and Haskell, if for some ungodly reason you want to.
Lua: lets you branch out into Python easier, if for some reason Lua isn't good enough for you. WOWfags will love you, too. Really good Q&D language.
Python: it's a solid, popular language with lots of libraries, without the starbucks faddishness of Ruby. Unlike Scheme and Lua, it lacks TCO (but it can be sorta hacked in*).
C: if for some reason you find yourself unable to accomplish something with the previous three, then you need C. Also, embedded systems need C, which can be fun.
Assembly language: if you go with embedded systems and for some reason don't have a C compiler handy, you'll need to understand assembly, but typically this is not harder than reading a datasheet for a processor. (Writing good assembly, on the other hand...)
Scheme: lets you branch out into LISP and Haskell, if for some ungodly reason you want to.
You don't know the reasons why one would want to get into Haskell or lisp yet you advocate scheme, and you even claim that language is worth my time, even though previously you admitted that you don't know the reason. Learn common lisp and don't touch scheme.
Lua: lets you branch out into Python easier, if for some reason Lua isn't good enough for you. WOWfags will love you, too. Really good Q&D language.
Who cares about WOW? You're saying a language is worth knowing because it will be useful for some time in a fad? "branching out" to python isn't something positive.
Python: it's a solid, popular language with lots of libraries, without the starbucks faddishness of Ruby. Unlike Scheme and Lua, it lacks TCO (but it can be sorta hacked in*).
Solid, popular language with a not-so-solid standard library, and an awful lot of 3rd party libraries abusing this short-seeing.
C: if for some reason you find yourself unable to accomplish something with the previous three, then you need C. Also, embedded systems need C, which can be fun.
Unlikely. Are you saying that from one side it is C, and from the other scheme, lua and python? C is worth to learn though. (Embedded systems don't need C actually)
(Writing good assembly, on the other hand...)
Is not that hard, just time-wasting.
Name:
Anonymous2009-06-09 11:20
>>27 Learn common lisp and don't touch scheme.
Why, so one can write C with parenthesis? Common LISP is like a garbage dump for programming methods.
Who cares about WOW?
No one. It was a joke. Lua is awesome, but for its lack of native bignum. It's about its only fault.
Embedded systems don't need C actually
Seen that way, nothing `needs' C. But when you can buy a ZiLOG dev board for less than $40 and download a free C compiler, it's better than mucking around assembly language.
Haskell is pretty great, but only go for it when you're ready.
Learn an Object-Oriented language, I'd recommend C#. It has the syntax of C, isn't an abomination like C++ and is godly compared to Java (has operator overloading, proper generics and even LAMBDA EXPRESSIONS). You can also use Microsoft's Visual C# Studio Express to quickly create GUIs if you need that.
Python is nice because of its standard library, and the indentation isn't really forced. Though its ``one way to do it'' philosophy might put you off a bit.
Lua is also nice because you can easily embed it in a C application.
For a ``gentle'' introduction to functional programming, you can try out Erlang. Many of its concepts will be new to you, but it's really interesting and pretty unique compared to other languages.
Don't touch VBever.
As for the SICP suggestions, it might help you understand the concepts you never came across (such as recursion). It's quite a good introductory text, but my opinion doesn't really count since I didn't even finish reading the first chapter.
Name:
Anonymous2009-06-09 12:16
ONE WORD - THE FORCED INDENTATION OF CODE /THREAD
Name:
Anonymous2009-06-09 13:37
>>30
Haskell is no harder to learn for beginning programmers than any other language. Everyone needs to remember this.
>>32
Learning other languages first will be better though. Functional languages don't have ``real'' iterating statements, also someone starting from Haskell probably won't really understand (and appreciate) currying. Being able to use mutable variables and state will be much easier for a beginner programmer, and also monads.
Name:
Anonymous2009-06-09 13:46
>>32
Haskell has the most abysmal documentation of any language on the planet. You think a beginner wouldn't be affected by that?
Name:
Anonymous2009-06-09 13:48
>>32
Provided that you, of course, have a proper reference for learning, such as YHBT Haskell Beginner's Tutorial.
Name:
Portaljacker2009-06-09 13:58
>>30
What are the differences between the different versions of C exactly? All I know is that C++ is object-oriented C.
Name:
Portaljacker2009-06-09 14:03
>>30
Actually, why is C# better than C++? I've always heard the opposite.
Name:
Anonymous2009-06-09 14:04
Hi OP, if you're a beginner the first thing you should check out is SICP. It teaches all the most important fundamentals of programming and computer science... actually that's a terrible way to start..
>>39
HtDP does a much more thorough job of educating people for good problem solving, with a strong emphasis on functional programming. But it's slower, and targets students on a lower-level. I don't know of anything that combines the good points of SICP (and there are plenty of them, of course), with a more systematic and less damaging approach.
Name:
Anonymous2009-06-09 14:05
>>37 different versions of C
I smirked ;-) (unless by ``versions'' you mean C99 etc.)
lol, C++ and C# aren't ``versions'' of C; they're different languages.
C++ was supposed to be C with objects (note: C with language support for objects, not object-oriented C), but it didn't really work out so well. It's an abomination of a language, with context-sensitive grammar and un-parseable syntax (though I'm jumping on the ``C++ hate'' bandwagon a bit, let the other /prog/-riders tell you all the specific flaws).
C# is Microsoft's Java, but fixed.
Name:
Anonymous2009-06-09 14:07
>>37
C++ looks like C in so many ways, but at the same time it's hugely different in terms of how you actually use it, so the syntactic similarities are about as relevant as those present in Perl or Javascript.
Name:
Anonymous2009-06-09 14:08
>>38
C# is object-oriented, newer, sane, etc.
Also, there's no ``better''. I would never choose C++ over C# when, say, creating a GUI application, but using C# in low-level or performance-critical applications is stupid (though in those cases you're better of with simple C and assembly anyway).
Name:
Anonymous2009-06-09 14:17
I write Caca apps using Objective-Sewer.
______
posted using my iPhoone
Name:
Anonymous2009-06-09 14:21
>>43 C# is... newer...
This adjective means nothing wrt programming languages.
Name:
Anonymous2009-06-09 14:46
C++ looks like C in so many ways, but at the same time it's hugely different in terms of how you actually use it, so the syntactic similarities are about as relevant as those present in Lisp or Scheme.
Name:
Anonymous2009-06-09 15:16
>>28 Why, so one can write C with parenthesis? Common LISP is like a garbage dump for programming methods.
Don't be stupid.
A. C already has lots of parentheses, and more when you include braces and brackets.
B. Common Lisp is like a factory outlet for programming methods. Then newer languages shoplift them, damage them, and turn them into garbage.
Name:
Portaljacker2009-06-09 15:29
Anyone on my C question? And so far all I know is to read SICP and finish learning C... Btw, I'm using C for Dummies, and not the All-in-One Desk Reference. When I'm done that book will I have 'learnt' C?
Whoops, my bookmark only let me see the first 40 posts so I didn't see those responses. The responses are sort of helpful and I'm probably going to chose C# for now since I'll be forced to learn C++ in University anyway. >>41
I know that isn't the word but it fit the best for what I was trying to say.
>>51
Why do you even need to buy a book to learn a programming language.
C# is simple enough, with MSDN and various Visual Studio features like Intellisense or pressing F1 when your cursor is centered on an identifier.
Name:
Anonymous2009-06-09 15:50
>>48
Gtfo and read K&R. When needed, consult c-faq.com.
Name:
Portaljacker2009-06-10 0:14
I guess at this point I'll just finish the book and ask again then with details of what the most complicated things I've learnt. Thanks for all the help.
OP, don't listen to /prog/. What you want is to learn a modern, rich, stylish programming language that you will use in the real world and that will be the de facto standard in the future: Ruby.