View Full Version : looking for tutorials on programming languages
jayhay
March 1st, 2008, 07:44 PM
Hi all, I have been using windows for years, and Linux for only a short period of time but have recently switched to Ubuntu. Primarily because as a website and web app developer, II want to learn more about webservers and what is possible onlinux blah blah blah...
However, I have wanted to learn Java, c++, Python and Ruby (maybe even rails) for quite some time now and Linux seems to be the platform of choice to learn on. my problem is, I don't know where to begin!! My programming skills have outgrown the languages I am familiar with (ever tried programming a raytracer in PHP? or a Neural network in JavaScript?) but I don't really have any experience with lower level languages and I just do't know where to start. The point I'm making is that I'm quite an experienced programmer in various higher level languages, so I'm familiar with the concepts involved with programming, but I'm new to Linux and lower level languages, so if anyone knows of any tutorials or lessons online that can talk me through setting up IDEs, starting projects and how to compile and execute code, but that aren't patronising or elitist I would love to know!!
cheers in advance
amingv
March 1st, 2008, 07:46 PM
Read the FAQs in the Programming Talk. All you need it's been taken care of...
Also, it's excellent you want to learn many languages, but which one do you wish to start with?
Athelstan101
March 1st, 2008, 07:53 PM
If you would like to get into some Kernel programming, then the following might be helpful:
http://www.xml.com/ldd/chapter/book/
However, the above link is for Kernel 2.4, so you will need to use some 2.6 examples, which you can find here:
http://www.cs.fsu.edu/~baker/devices/lxr/http/source/ldd-examples/
pmasiar
March 2nd, 2008, 12:07 AM
After PHP+JavaScript, C++ or Java might be too hard - and not needed for web applications.
Start with Python. It has also web frameworks like Rails: Django is most popular, TurboGears is little more flexible. Python has also OOP. Wiki in my sig has the links (it is linked also from sticky FAQ).
Then decide in which project you want to dive into, and learn C or C++ or Java as needed. C and C++ are different languages which share big part of syntax, so don't get confused. C is not OOP. You can also skip over Java unless you need it for job or project. You enhance you understanding of languages more if learn more "different" language, like Lisp, Prolog, Erlang, or Forth.
dynamethod
March 2nd, 2008, 12:25 AM
There is a great book called Absolute C++ by Walter Savitch, very good introduction to C++
Omnios
March 2nd, 2008, 12:29 AM
This is an older thread from a a while ago but has a lot of basic stuff.
http://ubuntuforums.org/showthread.php?t=255970
pmasiar
March 2nd, 2008, 01:29 AM
This is an older thread from a a while ago but has a lot of basic stuff.
http://ubuntuforums.org/showthread.php?t=255970
If it is not linked from FAQ, consider adding it there.
LaRoza
March 2nd, 2008, 01:35 AM
If it is not linked from FAQ, consider adding it there.
It was once a sticky, and is quite difficult to use.
I actually used that thread as the basis for my wiki.
kaens
March 2nd, 2008, 02:33 AM
If you're looking to improve your programming skills overall, and not necessarily just learn a bunch of languages, I'd highly recommend that you go through SICP (http://mitpress.mit.edu/sicp/full-text/book/book.html). The book, and it's associated video lectures are quite good.
I'd also recommend using DrScheme to go through the book - it's a very nice IDE for Scheme.
In addition to being a great text on computer science, SICP will introduce you to some paradigms that you are probably not used to given your language experience (well, perhaps a taste of some of them in javascript).
pmasiar
March 2nd, 2008, 02:57 AM
It was once a sticky, and is quite difficult to use.
You are right, that thread is almost impossible to read. Fonts are way too big, "thank you" comments quoting whole posts are all over.
I was thinking about old Wybiral's tread, precursor of "clean FAQ": http://ubuntuforums.org/showthread.php?t=333867 , and that one is linked from FAQ.
scourge
March 2nd, 2008, 07:34 AM
After PHP+JavaScript, C++ or Java might be too hard - and not needed for web applications.
You really think that someone who's "quite an experienced programmer in various higher level languages" is not ready to learn Java or C++? Come on, they teach that stuff at schools to people with no experience in any language.
I understand your extreme bias for Python. It's a good language for many tasks and probably suits perfectly for your needs. But it's not that much easier to learn than Java for example, at least wasn't to me.
elithrar
March 2nd, 2008, 08:09 AM
I understand your extreme bias for Python. It's a good language for many tasks and probably suits perfectly for your needs. But it's not that much easier to learn than Java for example, at least wasn't to me.
Python is quite compact though, which makes it easy to put to memory. With a strong mix of OO and functional concepts it does work as a solid, multi-purpose development language. System scripting, GUI applications & web-development (w/ Django, et. all) and it's respectable speed make it a worthwhile investment of time.
The following links should give you a good start on things; you can skip the basic introductions on some of the tutorials if you're familiar with basic programming concepts, but most of them work well regardless of your prior experience. Both the O'Reilly books I have and can strongly recommend:
http://docs.python.org/tut/
http://www.developer.com/lang/other/article.php/3624681
http://www.oreilly.com/catalog/9780596513986/index.html
http://www.oreilly.com/catalog/python3/index.html
scourge
March 2nd, 2008, 08:44 AM
The following links should give you a good start on things;
Actually I already have a lot of experience in Python. It just wasn't particularly easy to learn. The reason I use Python (when it suits the task at hand) is simply because I don't have to write that much code. As you said, Python is quite compact.
Omnios
March 2nd, 2008, 12:50 PM
You are right, that thread is almost impossible to read. Fonts are way too big, "thank you" comments quoting whole posts are all over.
I was thinking about old Wybiral's tread, precursor of "clean FAQ": http://ubuntuforums.org/showthread.php?t=333867 , and that one is linked from FAQ.
Hi the original thread was was made on a 19" monitor with 1400x res. After complaint I made the fonts smaller but apperently not small anouph. It was also a hackjob butting links from users posts into the starter post.
Not shure if it even worth redoing as there are a lot of other threads with the same info.
Was thinking of remaking it with a better layout and making it newbie friendly for newbies. Sort of more info to help users find what they are looking for.
pmasiar
March 2nd, 2008, 03:37 PM
You really think that someone who's "quite an experienced programmer in various higher level languages" is not ready to learn Java or C++? Come on, they teach that stuff at schools to people with no experience in any language.
Sorry I re-read OP and now I see I messed that part first time along. I remembered PHP part only.
I understand your extreme bias for Python. It's a good language for many tasks and probably suits perfectly for your needs. But it's not that much easier to learn than Java for example, at least wasn't to me.
My bias for Python is considerable, but not extreme :-) And AFAICT Python is substantially easier to learn than Java - I still don't get java and its byzantine libraries.
jayhay
March 2nd, 2008, 05:36 PM
Thanks everyone, I'll be checking everything out - I've heard a lot of good things about Python so I think I'll start with that, but as a scripting language that is interpreted does that mean it is not as good at handling things like neural networks or other processor intensive things like that? My interest in programming has a very broad spectrum, and I want to do some openGL stuff, some AI, all sorts of things, so really I'm looking for a language that I can pick up but that is capable of dealing with the range of things I want to experiment with, the web stuff is not important, it's just my day job!!
I think I'll start with Python and then think about C++ further down the line...
LaRoza
March 2nd, 2008, 06:02 PM
Thanks everyone, I'll be checking everything out - I've heard a lot of good things about Python so I think I'll start with that, but as a scripting language that is interpreted does that mean it is not as good at handling things like neural networks or other processor intensive things like that? My interest in programming has a very broad spectrum, and I want to do some openGL stuff, some AI, all sorts of things, so really I'm looking for a language that I can pick up but that is capable of dealing with the range of things I want to experiment with, the web stuff is not important, it's just my day job!!
I think I'll start with Python and then think about C++ further down the line...
Python and its many modules are written in C, so it is fast. One can use C with Python easily, which allows you to use Python for everything but the most intensive tasks.
C can also be used inline with Python, something I just learned about.
Python can be used with OpenGL, and Python is well suited for a wide range of tasks.
Of course, don't restrict yourself to one language, you should end up learning several languages.
pmasiar
March 2nd, 2008, 06:28 PM
but as a scripting language that is interpreted does that mean it is not as good at handling things like neural networks or other processor intensive things like that? .
Best way, by opinion of many, is to prototype whole solution in Python, profile bottlenecks, and try to optimize those first in Python (and you can measure impact of your changes). If not enough, write libraries in C implementing those functions more effectively (again measuring impact).
Writing everything in C/C++ just because you might feel that some parts might be not fast enough seem like premature optimization (which is, as we all know, root of all evil :-) ), at least to me.
Speed is not a problem until you can measure where is the problem. :-)
cyrusjunior
March 2nd, 2008, 08:27 PM
Hello All,
I have been doing Java programming in my early years of programming, but I have yet to fully grasp object oriented programming. Recently I have a more important question that I like to ask the community. I am interested in learning how to think in object oriented programming. I can understand syntax in introductory java books. I have googled with the search term of "think oop java" but I didn't get much result.
Would anyone kindly point me with some reading materials or exercises to think in oop?
P.S. Sorry if my post isn't exactly fitting the subject in this post.
LaRoza
March 2nd, 2008, 08:40 PM
Hello All,
I have been doing Java programming in my early years of programming, but I have yet to fully grasp object oriented programming. Recently I have a more important question that I like to ask the community. I am interested in learning how to think in object oriented programming. I can understand syntax in introductory java books. I have googled with the search term of "think oop java" but I didn't get much result.
Would anyone kindly point me with some reading materials or exercises to think in oop?
Perhaps this may help: http://java.sun.com/docs/books/tutorial/java/concepts/index.html
Also, you often get a better understandint of concepts if you see them in a different way, like looking into OO in Python or Ruby, to see how it is done there.
cyrusjunior
March 2nd, 2008, 09:08 PM
Hello LaRoza,
Thank you. I'll look at the link. I guess I just don't program enough in objected oriented to get the feel of thinking object oriented.
I have found a book called thinking in java. It had some interesting chapters that discussed about objected oriented programming.
pmasiar
March 2nd, 2008, 09:47 PM
"Head First OOP and Design" is excellent intro book, as all books from that series. Excellent as: fun to read, engaging. Best explanation of difference between object, reference to it, and variable holding the reference I ever seen anywhere. And many other gems like that: it was written not by programming gurus, but experts on cognitive science who knows enough programming.
"Head first" is my favorite intro book series into any topic, I am hoping for "head first Python" :-)
slavik
March 2nd, 2008, 09:55 PM
Python and its many modules are written in C, so it is fast. One can use C with Python easily, which allows you to use Python for everything but the most intensive tasks.
C can also be used inline with Python, something I just learned about.
Python can be used with OpenGL, and Python is well suited for a wide range of tasks.
Of course, don't restrict yourself to one language, you should end up learning several languages.
s/python/perl/ig;
and imagine I posted it ;)
LaRoza
March 2nd, 2008, 10:28 PM
s/python/perl/ig;
and imagine I posted it ;)
I am not experience in Perl, and am mostly unaware of its features and capabilities beyond the basics. (As I use Python for that niche in programming, Perl and Ruby are second thoughts, like I imagine Python and Ruby are for Perl users)
Thanks for filling that gap :)
LaRoza
March 2nd, 2008, 10:30 PM
Hello LaRoza,
Thank you. I'll look at the link. I guess I just don't program enough in objected oriented to get the feel of thinking object oriented.
I have found a book called thinking in java. It had some interesting chapters that discussed about objected oriented programming.
Java in my opinion, is for those that already understand OO. Java is very OO, and requires one to "get" it from the start to really understand the language.
Python, Ruby, and ECMAScript (among others) are designed as OO languages, but are gentler in expressing it. (Everything is an object in these languages, but one doesn't have to know that to use them)
pmasiar
March 3rd, 2008, 12:01 AM
s/python/perl/ig;
and imagine I posted it ;)
For differences between Perl and Python, see "Why I love/hate Perl" and "Why ... Python" in sticky FAQ. There are plenty of them, and choice is obvious. :-)
slavik
March 3rd, 2008, 01:19 AM
For differences between Perl and Python, see "Why I love/hate Perl" and "Why ... Python" in sticky FAQ. There are plenty of them, and choice is obvious. :-)
yes, Perl.
kaens
March 3rd, 2008, 03:34 PM
I am not experience in Perl, and am mostly unaware of its features and capabilities beyond the basics. (As I use Python for that niche in programming, Perl and Ruby are second thoughts, like I imagine Python and Ruby are for Perl users)
Perl is extremely powerful, and definitely worth learning - as an exercise in forcing yourself to write clean code if nothing else. It's really easy to just slam out a script and have it be totally unreadable in a few months.
I prefer it over python for web scripting and text mashing.
In my opinion, Ruby is a really, really nice language from the "oh my that's some beautiful code" standpoint. I find most things to be expressed very elegantly in Ruby. I'd almost say that it's perl done right.
Either way, both languages are more than worth learning -
perl.com (http://www.perl.com/pub/q/documentation) has lots of good perl documentation, and this (http://www.math.umd.edu/~dcarrera/ruby/0.3/) is a pretty decent introduction to ruby.
I use python more than either of them as well.
LaRoza
March 3rd, 2008, 03:56 PM
Perl is extremely powerful, and definitely worth learning - as an exercise in forcing yourself to write clean code if nothing else. It's really easy to just slam out a script and have it be totally unreadable in a few months.
I prefer it over python for web scripting and text mashing.
In my opinion, Ruby is a really, really nice language from the "oh my that's some beautiful code" standpoint. I find most things to be expressed very elegantly in Ruby. I'd almost say that it's perl done right.
I use PHP for server side scripts. The problems with Perl, Python and Ruby are that they overlap in many areas. Once you know one, it is usually redundant to learn another. While I do "know" Perl and Ruby, I usually don't write in it.
I found Ruby to be a "mix" of Perl and Python, which was interesting. (I also found less reason to use it, because I had already learned Python and was working on Perl)
pmasiar
March 3rd, 2008, 04:05 PM
I don't see a reason to learn all four of Python, Ruby, PHP and Perl: all serve about the same niche, all are about equaly expressive (PHP seems to be "grown" and not designed at all, Ruby being in the middle, Python being the on the "clean readable code" side, and Perl the "quick dirty hack" side -- but about the same anyway). Any of them is enough to solve most of problems it that target niche. So most people stick with the one they learned first. Some people (like me) move from Perl or PHP to Python (to "cleaner, readable" side) but I do not see much movement in the opposite direction.
Better idea IMHO will be to spend time learning some radically different language: C, Lisp, Forth, Erlang, SQL, Prolog.
kaens
March 3rd, 2008, 04:27 PM
Better idea IMHO will be to spend time learning some radically different language: C, Lisp, Forth, Erlang, SQL, Prolog.
I would agree that it's probably a much better expenditure of your time to learn a language that utilizes an entirely different programming paradigm than python, ruby, and perl.
I'm actually considering moving most of my development-as-hobby to common lisp - I really like the flexibility and power that the language provides, and pythons crippled anonymous functions are starting to get on my nerves.
vBulletin® v3.7.4, Copyright ©2000-2008, Jelsoft Enterprises Ltd.