Tech-related books

Does anyone know where I might find some tech-related books, mostly programming stuff? I've tried online tutorials but I've never gotten in the groove with them...I think its time I tried a book! :P Specifically, I'm searching for some books on Python (and maybe Ruby on Rails too).

Does anyone on here have any experience with either of these, or any other programming language? :D

No..

Get the ebook version and print em. :P

OR

You can order them from amazon.com which will ship at an expensive cost. :(

I won't give you any specific links, since I don't want to link to pirated content. But if you use torrents, search on mininova.com or isohunt.com for python, you'll get loads of ebooks which you can download. I've personally used programming ebooks to help me improve my skill/knowledge, and have had a very good experience with them. You can also just go to Urdu Bazaar and you'll find those books in print (albeit the crappy pirated photocopied edition) if you prefer the physical book.

You didn't really mention what kind of programming you're interested in. You only mentioned scripting languages, so I'll just comment on that. Python is in high demand, is a very powerful and flexible language, and scripting languages are generally extremely easy to learn as far as syntax is concerned. So learning Python will definitely be a good start.

Generally, if you want to be a good programmer, you should be an expert at one object oriented compiled language such as C++, and one scripting language such as Python. The important thing is to focus on the programming concepts such as object orientation, inheritance, polymorphism, classes etc. If you're comfortable with the syntax of say C++ and Python, its safe to say you can very easily pick up any other programming language out there. I would personally urge you to focus on depth of knowledge in a couple languages, instead of trying to learn fifty different languages, since like I said, they're all very similar and you only really need to know one and you can switch easily to others.

[quote=", post:, topic:"]

You didn’t really mention what kind of programming you’re interested in. You only mentioned scripting languages, so I’ll just comment on that. Python is in high demand, is a very powerful and flexible language, and scripting languages are generally extremely easy to learn as far as syntax is concerned. So learning Python will definitely be a good start.
[/quote]

By kind of programming you mean web-based or local computer stuff, etc? Web-based is more interesting I guess, but I’m trying to get a flavour of everything right now so anything goes :P

[quote=", post:, topic:"]
Generally, if you want to be a good programmer, you should be an expert at one object oriented compiled language such as C++, and one scripting language such as Python. The important thing is to focus on the programming concepts such as object orientation, inheritance, polymorphism, classes etc. If you’re comfortable with the syntax of say C++ and Python, its safe to say you can very easily pick up any other programming language out there. I would personally urge you to focus on depth of knowledge in a couple languages, instead of trying to learn fifty different languages, since like I said, they’re all very similar and you only really need to know one and you can switch easily to others.
[/quote]

I’m focusing on OOP concepts, trying to figure out the benefits over other methods. I’m just starting out with all this so my terminology stinks - but isn’t Python also used with a compiler? I mean not just for web-based applications?

I’ve worked with PHP before this and a bit of JavaScript as well, and I like writing code, experimenting and finding out how things work. I’ve looked at only web-based applications up to now, went through a lot of open source code to see what the code looks like and what it does exactly.

The photocopied Urdu Bazaar versions would be worse than the online tutorials I think! I’ll try out the ebooks. Which do you think, Python or C++, would be a better angle to start learning heavy-duty programming from?

[quote=", post:, topic:"]

I’m focusing on OOP concepts, trying to figure out the benefits over other methods. I’m just starting out with all this so my terminology stinks - but isn’t Python also used with a compiler? I mean not just for web-based applications?

I’ve worked with PHP before this and a bit of JavaScript as well, and I like writing code, experimenting and finding out how things work. I’ve looked at only web-based applications up to now, went through a lot of open source code to see what the code looks like and what it does exactly.

The photocopied Urdu Bazaar versions would be worse than the online tutorials I think! I’ll try out the ebooks. Which do you think, Python or C++, would be a better angle to start learning heavy-duty programming from?

[/quote]

If you want to improve your understanding of OOP concepts, go for C++, C# or Java. Although Python is a dynamic object-oriented language, many books on python do not explain the concepts properly. Additionally, you will miss the concepts that static (strongly-typed) languages advocate. So I would recommend that you pick one static language to start with and learn a dynamic (scripting) language later on.

Ebooks are definitely the way to go :)

[quote=", post:, topic:"]
I’m just starting out with all this so my terminology stinks - but isn’t Python also used with a compiler? I mean not just for web-based applications?
[/quote]

PHP, Ruby and most of these scripting languages can be run via command-line too but they aren’t as fast as their static counterparts, such as C++ or Java. And with certain layers of libraries (like GTK; limited tho, and less speed), you may even create GUI-based software using the very same languages. Heck, you can create that software knowing just javascript, HTML, and / or Actionscript. Some languages have evolved and PHP can be used almost as a native .NET language using Phalanger, just like C# or VB. However, as I mentioned earlier, these library-based implementations all have limitations and they do not help you much with understanding programming concepts.

P.S. whatever you do, do NOT start with a book on ruby on rails - it’s a framework. You’d want to pick a book on ruby instead if you really want to get into it.

[quote=", post:, topic:"]

If you want to improve your understanding of OOP concepts, go for C++, C# or Java. Although Python is a dynamic object-oriented language, many books on python do not explain the concepts properly. Additionally, you will miss the concepts that static (strongly-typed) languages advocate. So I would recommend that you pick one static language to start with and learn a dynamic (scripting) language later on.

Ebooks are definitely the way to go :)

[/quote]

I’ve gotten some ebooks on C++, I’ll start on those first then!

[quote=", post:, topic:"]

P.S. whatever you do, do NOT start with a book on ruby on rails - it’s a framework. You’d want to pick a book on ruby instead if you really want to get into it.

[/quote]

Of course, language before framework!

Are you guys studying programming? Thanks for the help though, its much appreciated! :)

[quote=", post:, topic:"]

Are you guys studying programming? Thanks for the help though, its much appreciated! :)
[/quote]

As in an academic course? Not me. I’m a self-trained programmer. Even though if you take a course on programming, most of it will have to be learnt on your own. If you lack enthusiasm, which I don’t think applies to you, formal courses might help you getting in the groove.

try these 2 sites if u wanna grab loads of books

pdfchm.net

gigapedia.org

u gotta register there with free account to see download links =]

I've read C# is a derivation (perhaps not the best choice of words?) of C++ and has better memory management than the latter. They both have pretty much similar syntax too I suppose. As I understand it, C++ is lower-level than C# and so would execute faster. C# uses a runtime and would run slower but is more portable.

Which would you recommend I focus on first? I guess C++? :P

BTW, currently reading "C++ Primer Plus" by Stephen Prata.

@wzub: To answer some of your questions:

- The difference between scripting and compiled languages is that you can run scripts directly in its text state, whereas compiled languages need a compiler to first convert it into some kind of executable before it is run. Each type has its own advantages. Scripts are can be written quickly, easily and are extensively used in testing area, however errors are usually caught at runtime unless its a blatant syntax error. Compiled programs take more time and effort to write but you can address issues such as efficiency, memory management etc and are generally more powerful than scripting languages.

- C# is Microsoft's completely unnecessary attempt at making their own language. I had to learn C# for my intro to programming course in first year, and honestly I'm not a big fan. It has an automatic garbage disposal, which is controversial in the sense that some people prefer to manage memory on their own. You can read more about the advantages/disadvantages of C#, but I'd recommend you stick to C++. Its older, more established and definitely more widely used. If need be you can pick C# at a later stage and you won't have a lot of trouble learning it after C++.

- I'm in Electrical Engineering so we barely cover the very basics of programming in school. I'm self taught for the most part, and all my work terms have been in software related areas. The only way you learn to program is through practice, book reading alone won't get you anywhere. Your programming prowess is linear to the number of lines of code you've written in your life! So code away.

[quote=", post:, topic:"]

I’ve read C# is a derivation (perhaps not the best choice of words?) of C++
[/quote]

C# is influenced by C++ along with Java and Delphi.

[quote=", post:, topic:"]
and has better memory management than the latter.
[/quote]

C# has better garbage collection.

[quote=", post:, topic:"]
They both have pretty much similar syntax too I suppose.
[/quote]

On the surface, yes.

[quote=", post:, topic:"]
As I understand it, C++ is lower-level than C# and so would execute faster. C# uses a runtime and would run slower but is more portable.
[/quote]

C++ is higher level language. C# need .NET runtime or Mono to execute it’s programs. C++ produces native code that’s why it has some speed advantages.

[quote=", post:, topic:"]
Which would you recommend I focus on first? I guess C++? :P
[/quote]

C++. However, understanding of plain C may give you better and easier understanding of C++

I personally don’t like C#. I agree with sah that C# is an attempt by Microsoft to produce a language similar to Java. In fact, Microsoft hired Anders Hejlsberg (the man who was behind Delphi) to lead the team of C#.

C# is mostly use for in-house programs. Even though C# code can be obfuscated but still can be decompile. Not good if you are producing a commercial software. Decompiling of native C++ software is really hard.

C++ is not a RAD. That’s why it’s not that much useful if you are creating a software that will be use within a company. For that kind of softwares; C#, Java, VB.NET, Delphi etc. give better results.

very correct oppinions above. wzub, you should follow if you are so interested.

but I have a very un-related question. :)

what do you do currently?

I mean,

a student?

on a job?

doing business?

what???

I am asking because I only see here that "you are just about to know how to start with it". it seems to me that you are not a person of topic related field. but only having interest in programming languages to learn.

is that so?

I would suggest starting off with C++...and the book that I recommend is 'Object-Oriented Programming in C++ by Robert Lafore...

after mastering C++ you will find learning C# and Java to be a piece of cake...

and also I disagree with the statement 'C# is not Microsofts completely unnecessary attempt at making their own language' (that was actually BASIC :P)...I think C# is an excellent language with lots of features which makes development a whole lot easier...if you want to use the awesome power of the .NET framework then C# is the language to learn (stay as far away from VB as possible)...

"C++ is not a RAD" - I don't understand what you mean by this...C++ is a language and RAD is a software development method, there is no reason, given the right libraries and tools, C++ could not be leveraged for RAD...

also garbage collection does not really have anything to do with the language per se, its just that some languages include it as standard and others don't...you can use pointers in C# and you can have garbage collectors for C/C++...

[quote=", post:, topic:"]

“C++ is not a RAD” - I don’t understand what you mean by this…C++ is a language and RAD is a software development method, there is no reason, given the right libraries and tools, C++ could not be leveraged for RAD…

[/quote]

Even using any of the famous libraries (application framework) like MFC, VCL, WTL, ATL, Qt, wxWidgets; still C++ is not that much RAD as compare Delphi and VB.

Along with other languages, I do programming in C++ and it’s from my own experiences. By the way, there are many libraries but I have use only few (mentioned above). Maybe with other libraries it might be RAD-like development like Delphi and VB do.

@firestorm

if he is just starting, I would not recommend Robar Lafore. I dont think it's good idea for a beginer.

Actually I would recommend 'C++ How to Program' by Deitel & Deitel. (http://www.deitel.com/Books/CPlusPlus/CPlusPlusHowtoProgram6e/tabid/2046/Default.aspx)

It is the book of choice for many universities, and I myself started learning from it. The book explains the concepts very well, and has a multitude of examples to demonstrate them. It is also easily available in Urdu Bazaar.

Having said that. Any of the more popular books will do as long as you have the motivation and dedication to learn! :)

Well actually Lafore is a better book for beginners. It is written in an easier way, and focuses on rather basic aspects of language, the programs use only features availabel with all common compilers.

Dietel is more rigorous and explores the languages to its boundaries. Also I have came across atleast one program in dietel that dint run on my VC6 but ran on gcc. It is a middle to advanced level book.

Also lafore never refers to anything he hasnt introduced so far, even if it makes the life easier, but dietel does refer to things that are explained later in the book. it makes it more confusing for a beginner

[quote=", post:, topic:"]

Having said that. Any of the more popular books will do as long as you have the motivation and dedication to learn! :)
[/quote]

Ditto. Need dedication because after first few couple of days when enthusiasm is gone, programming becomes as dry as Math. I love both of them :)

Hm, well I don't like Math very much, but programming is fun so I guess I'm doing alright :)

@bellskar: I'm doing A'levels right now but I'm interested in programming and computer science in general, that's why I'm learning on my own.

I'll take a look at those two books you guys mentioned, Lafore and Deitel.

One more question - is UML commonly used in software design? I've had a brief but painful encounter with UML once and I was wondering whether I'd have to encounter that once more... :P

Thanks for the help, I appreciate it very much.

[quote=", post:, topic:"]

One more question - is UML commonly used in software design? I’ve had a brief but painful encounter with UML once and I was wondering whether I’d have to encounter that once more… :P
[/quote]

Depends, how much leisure time you have. Programmers in Pakistan (especially in government sector and sometime in private sector) are very found of UML and then rebuilding many versions of UML because non-tech people get impress (as they know nothing) by UML hand-written or printed on a very large paper/chart-paper. (2’ x 4’ or larger).

But in real world, they are of little use. Write on a paper what you are expecting and what your program will do. Try to write down basic C++ classes structure that you’ll use in your software. Mostly it all take just single sheet of paper. Then hit on keyboard and start typing :D