How can I find the Reviews for all the technical Books? - comments

Is there any site for technical books reviews and comments. So that it is very useful before reading the book.

I usually use Amazon's reviews and whatever a search finds me. Ideally I like to see a review weigh up pros and cons with examples of both the good and the bad, rather than just saying "This book is great."
There's a problem with reviewing technical books though: if you don't know the topic, you can't judge how accurate the book is, but you get a rough idea of how well it explains things (in terms of whether or not you get lost). If you do know the topic, you can judge accuracy but you can't judge how useful it would be to a newbie. I've blogged about this in more detail. (If you happen to want to read a review of any book I've reviewed, I have a book review tag on my blog. I tend to be harsher than most reviewers, partly because I have a very high standard for accuracy (not that I'm claiming to meet it myself), but I do at least explain why I do or don't like a book.

Amazon.com?

http://books.slashdot.org/

Related

how do I approach Prolog

I have taken up Prolog course in my university. The coursework requires us to write prolog programs. I am able to write simple programs, however I am finding it little hard to digest the complex programs. Any suggestions how to proceed or how do I study this subject ? what is the approach to tackle this kind of course. Any help appreciated.
Thanks.
I write an answer (which is probably just rant) because I struggle with the same problems. If a question gets closed I think the answer still stays?
what is the approach to tackle this kind of course.
Like all courses, you collect all material that your teacher/instructor/professor gives and find the books they recommend. You do the exercises as the way they expect. Do not be clever with your solutions, be clever with finding what your instructor wants to see! Try to find old exams and study them; esp. if you can find graded exams (if you are lucky and "resourceful"... ask older students for help!)
Any suggestions how to proceed or how do I study this subject ?
It is difficult to learn Prolog. I try to learn it at University and the teacher says one thing. Then I pick up a book ("Sterling and Shapiro") and it says another thing. Then I go online and I find yet another two very different things ("Amzi Amazing Adventure" and "Learn Prolog Now!"). There is also "Expert systems in Prolog" (from the Amzi website) and it is still another thing. I come to StackOverflow and I find yet other answers that are NOWHERE in all the texts I have tried to read.
The best place to learn for me is the SWI-Prolog predicate documentation: this is outrageous, don't you think? At least it is consistent....
And then many of the answers here on Stackoverflow I have tried to learn from are talking about things that make no sense (to me), probably because I don't know Prolog, but how to learn it? And almost all questions are homework, and almost all answers to homework are like little lectures that talk about ISO and logic and pureness but no clear answers.
In conclusion: "Sterling and Shapiro" was at least complete, and not too strange; and SWI-Prolog has good predicate documentation and even code examples.
EDIT: nowhere nowhere in all texts do you read about modules, but how do you write big programs without module system? Even the C++ book by Stroustrup explains how to use headers and source files to maintain a bigger program. Again, you go and read the chapter on modules in the SWI-Prolog documentation.
EDIT2: I study "Computer Science" so I maybe know "programming" and "data structures" and "algorithms" and I understand what is "proof tree" and "backtracking" and such things. Prolog is just another language. So why is it so difficult to teach it and learn it? This is an open question. I don't want to ask it on Stackoverflow because it will be closed.
EDIT3: Because you have tagged "clpfd", there is yet another text:
https://www.metalevel.at/prolog
It shows many solutions with clp(fd) that I did not see in any other of the texts I cited. It is useful and consistent but again it is different from all other texts. Maybe if I read and study everything I can find I can give you a real answer.
But do you want to pass the course or learn Prolog? Do you want a good grade and minimum effort? You need to find answers to such questions first!

Looking for a path to learn the math required to understand algorithm books / theory [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 9 years ago.
Improve this question
I've taken everything up to pre-calculus in college, but when trying to get through things like the Donald Knuth books, or even things like this link: http://en.wikipedia.org/wiki/Self-balancing_binary_search_tree I wind up looking at math that means absolutely nothing to me. I'm not looking for magic, I don't expect to make sense of this in a week, I'm just looking for a good graduated plan of things to read / explore to get me there. Any pointers are welcome, after 20+ years as a professional programmer, I feel it would be nice to have this under my belt. Thanks in advance to everyone! :-)
I actually recommend taking a discrete mathematics course at your local university. This helped me out tremendously. Until I had this, I did not understand recursion (which is based on mathematical induction.) There are a number of other concepts which you will learn in a good discrete mathematics course which are extremely, extremely helpful (graph theory, asymptotic notation, combinatorics...)
I also recommend taking the class for a grade. I have always noticed that this makes people take the course more seriously, even if it is not in line with a degree path or anything past the grade.
If your local university is good, they will likely have tutoring sessions and office hours available that you can go to in order to ask questions and get clarification. These are really, really valuable and helped me learn things in a deeper manner, and more quickly, than I ever could have on my own.
You may need to take calculus in order to meet the prerequisites, but that is something I would also recommend if you'd like to increase your mathematical literacy. This 'answer' will take at least a semester, and more like two, but I think this is the way to go. It's not an immediate solution, but you will become better at math if you perform well in these two classes (and you have a good university close by.)
Your profile says you are in Dallas. I found this course (with no prerequisites!) for you. The syllabus looks like it covered a lot of good material, and the course met at 5:30 p.m. (good for working people!). If they are offering anything similar next semester, I'd consider it. If you call up the instructor, I'm sure he'd be happy to talk with you about what he knows for summer and fall scheduling.
This path has worked well for me.
Good luck!
You can try this: http://www.amazon.com/Concrete-Mathematics-Foundation-Computer-Science/dp/0201558025
There's a pdf version of this available online, you can easily google it out.
Many of my friends who are great programmers recommended it.
A lot of talented programmers understand algorithms before understanding the maths behind them. Maths are only there to help, they are not here to make you understand everything. You will need to spend more time reading about algorithms and complexity, then you might get a sense of how to evaluate them.
I recommend you to read more books about algorithm complexities.
In your long experience as a professional programmer, there surely are topics and sub-domains that you are most curious about. My advice is: identify those areas and go after them. It might be code-breaking, number theory, recursion, functional programming, computational origami, logical puzzles, crystal structures, graphs, genetic algorithms, splines...
Take your own remark to heart:
but when trying to get through things like the Donald Knuth books, or even
things like this link:...I wind up looking at math that means
absolutely nothing to me
What sort of math fascinates you?
I could say there are lots of intriguing puzzles at Project Euler. After you solve a programming challenge, you have access to a forum in which other folks share their solutions and occasionally refer to some body of knowledge they were drawing on. I love it. But what matters is what you like. Your own interests are the key to your learning.
If math and programming no longer have any appeal--you don't like doing them in your spare time--find something else to get into: acting, foreign languages, travel, French cooking, biking. Who knows, maybe you're burned out.
I'd say get a good book in discrete math and one in combinatorics as well. Here are a few I've liked. The Rosen book is good place to start.
http://www.amazon.com/Course-Combinatorics-J-van-Lint/dp/0521006015
http://www.amazon.com/Discrete-Mathematics-Applications-Kenneth-Rosen/dp/0073229725/ref=sr_1_2?s=books&ie=UTF8&qid=1305304408&sr=1-2
http://www.amazon.com/Introductory-Combinatorics-5th-Richard-Brualdi/dp/0136020402/ref=sr_1_7?s=books&ie=UTF8&qid=1305304434&sr=1-7
In line with what Vincent said, I recommend Algorithms in a Nutshell from O'Reilly (here).
There is a plenty of good video-lectures on Discrete Math, Calculus and Applied Math. Just watch them every evening, make notes and try to solve simple problems. To prepare yourself for Knuth, try "Discrete Mathematics". To understand deeply what is math and how all things in the universe are interconnected (including algorithms), try "Joy of Mathematics".
I was looking for just the same thing. I couldn't afford any of the material suggested here so far so here's a link to a YouTube lecture series on Discrete Mathematics. I wish there was a playlist but unfortunately there is not.
The videos are taken uploaded from http://www.aduni.org who ask for a donation of 25c per video to cover operation costs.

Having a bit of trouble with self-learning from Cormen et al's algo book

I started reading Intro to Algorithms by Cormen et al like 3 weeks ago on my free time. I finished the second chapter and have been trying out the exercises for quite a while. I find them a bit difficult.
Is this normal? Should I finish all the exercises before moving on? Or is it alright if I solve the ones I can and move on to the next chapters, possibly coming back to the exercises I can't figure out right now?
If anyone out there has had experience with this book, can you tell me how it was for you? I'm a bit discouraged on not being able to solve quite a few of the exercises here.
That book was hard for me too. We used it at the university I attended and I often had to refer to other sources to get simpler explanations when I found CLRS a little over my head. Once I got the Wikipedia explanation straight in my head, and a code sample working (which CLRS often lacks), I found that I was able to go back to the text and make sense of it.
Don't worry about doing all of the exercises. Even the super-elite MIT students don't have to do them all. Do what you can do and move on. If you need a concept in the next chapter that you had glossed over, it will still be there for you to backtrack to.
MIT OpenCourseWare has also made available the old lectures for Introduction to Algorithms (SMA 5503).
Good for you for diving into CLRS by yourself. You're a braver man than me. I used the book for a grad algorithms course I took last semester, and I had a hard time just finishing the problem sets assigned for the course. Completing all of the exercises would be a truly Herculean effort.
I'd recommend tackling the chapters that interest you most and those that you don't find to difficult. The beginning of the book, if I remember correctly, is one of the harder parts, diving into the mathematical background of a lot of different areas of algorithms. Chapter 5 is especially difficult unless you know a fair bit of probability theory. Also, starred sections and problems are significantly more challenging than the surrounding material (like 21.4, which contains material our professor confessed to being unable to prove in class). Finally at the end of the book, there is just a survey of miscellaneous topics; you can just look at those that interest you, since there are entire books written about each of those topics if you want to learn more about them.
I hope this helps, and most importantly, don't get too discouraged! This is the seminal book on algorithms for a reason.
It's a difficult book, used by one of the pre-eminent technical universities in the world. It's no surprise that it's challenging. There are a LOT of exercises of varying difficulty. It's a noble goal to attempt all of them.
Aren't the course materials on-line? It'd be interesting to see if students taking the course for credit do all the exercises.
I wouldn't be discouraged. Keep plugging, even if you have to pass on some of the exercises. There's nothing saying that you have to master it in one pass, either. Go through, take in what you can, and re-do if necessary. You might find that the extra context helps.
The lectures are available on iTunes if you find that helps.
The important thing is to set a deadline and make steady progress. Good luck.
The problem with not doing all the problems is that when you are self-studying, you really don't have a good gage for how much you should be able to answer.
You can look at the course assignments online, I would recommend that for figuring out problem sets to get done.
I am learning Algorithms on my own from the CLRS book in 2020. Regardless of what people tell you about solutions manuals in general, it is advisable to get "good" solutions manuals if you are self studying with the book.
The two sets of solutions I recommend are (1) The official instructor manual and (2) solutions by Rutger's university students Michelle Bodnar and Andrew Lohr. When one of those solutions is unclear, I simply refer to the other one. If you get stuck at a problem, then give yourself a few minutes to solve it. If you don't get the answer, then use the solutions manuals. You can always test yourself on the problems from other text books or leetcode to see how much you can do on your own vs just following a solutions manual.
I won't post the solutions manuals here. I suggest that you search for them online. The Rutgers one is easily available and is legal. The official one is restricted to instructors only and is hard to get. You might be able to pay obscure online sellers/hackers to get the official one for you. Use a preloaded visa or master card gift card to make that purchase. Make sure that the card is accepted in the sellers country.
Chapter 2 was doable because I used Youtube to understand algorithms and time complexity when it was not clearly explained in the CLRS book, which is quite often. The solutions manuals also helped a little bit.
Chapter 3 is hard and I don't know if I will be able to get past this one. I might have to switch to another book, perhaps the one by Tamassia. I had studied elementary algebra, set theory, functions, probability, mathematical series and calculus a few years ago. But, I remember only a few of those things. So, it is difficult to understand Chapter 3 and move ahead.
In general, it is a comprehensive and rigorous book. However, it is bad because of these:
One-based array indexing (instead of the usual 0-based) - so everytime you translate the algorithm present in the book into code you have to either +1 or -1 and / or use < instead of <= or the other way around and so on.
Bad variable naming in pseudocode - instead of lo, hi or left, right you get p and q.
The fact that is is very rigorous may get you confused in the little details and usually you can miss the overall idea of an algorithm.
It is a famous book because many scientific papers refer to this book in their references.
Otherwise, it is ok.

How to learn the necessary anthropology to create social software?

Joel Spolsky repeats over and over that today, knowing a bit of anthropology can be very useful for a programer because much of what's being created is social software.
How can someone that already knows the computer science learn the anthropology needed to know how human beings works? Any books? Any recorded lectures?
I agree that knowing a bit about how we think is more important now for a developer then ever. The book Consciousness Explained by Dan Dennett was a real eye opener for me in understanding that we don't think the way we think we think.
I would suggest Clay Shirky's site is a good place to start. It's social anthropology set in a context of the internet, so it's more accessible (to programmers) than purely academic anthropology.
There is a book I've heard is good, but didn't have a chance to dig through it yet: Programming collective intelligence. It gives you some algorithms to quantify human behavior in social software. Sounds interesting.
Mathew Podwysocki wrote a post some time ago about implementing these ideas in Haskell.
I'm not sure that approaching contemporary anthropology is a whole is
the absolute best way to develop the knowledge that you
seek. Anthropologists study a bunch of different things, and while
knowing this stuff will help you be able to develop better designs and
products, this is a case where being a generalist is probably not an
effective use of time.
Anthropologists study culture, the superstructural stuff that
happens when you put a bunch of people in close proximity and let the
situation stew for a while. Apologies for the rough
definition. Knowing about culture, how cultures and societies
function, what causes them to break, what causes them to flourish is
fascinating and useful. Reading the "anthropological cannon" will help
you begin to understand this, but again long road, and I think the
questions you need answered are more easily addressed with some
specific projects.
First I'd like to just characterize Anthropology for a moment:
Although Anthropology isn't an experimental field, it's incredibly
empirical. Anthropologists collect a lot of data, and attempt to
describe what they see as totally as possible. This methodology, and
approach is--I think--extremely useful to software developers. It's
very easy to say "people want this," or "users feel this way," about a
feature or aspect of your software based on your experiences. It's
terribly difficult to figure out how users actually feel and interact
with your software in a precise way. If you had to take one
Anthropology class as a software developer, I'd recommend something
with a methodological emphasis.
In terms of specific resources, the following directions spring to mind
Dona Harroway's "The Cyborg Manifesto," springs instantly to mind as
the foundational work in a field of study that explores the
interaction between people, and machines as a social phenomena. It's
short. Good read. Amber Case, a young "cyborg anthropologist" does
work in Harroway's tradition, and I'd follow up on both of these
folks.
Secondly, I'd explore studies of cities and small communities. Except
in some very extreme cases (i.e. Twitter, Facebook, etc.), whole
cultures aren't using your software. Groups are. Learn about them. I
think urban studies and work that gets called "urban sociology" might
begin to provide you the kinds of answer that you'd be interested
in. I think that would be a good place to start.
The only rule to know about social software is that "people will do anything to make money or get laid" :)
But on a serious note, I don't think anthropology is what matters, but rather an understanding of the motivation that people have to contribute to social software or to expose themselves on social software. There have been quite a few recent books that explain a lot of these concepts in good terms. A good start could be "Here comes everybody" by Clay Shriky.
The Design of Everyday Things
The Humane Interface
Many of the answers here are pointing towards texts on how consciousness works or how people interact with devices. This is a great start, since it shows where you would want to go. Beyond that, you could consider understanding fundamental social and experiential aspects of how humans work. This way, you can develop software with an understanding of how humans could experience your software, as well as how it could be part of a social world.
To this I recommend The Ethical Primate from Mary Midgley. The text is about philosophy, ethics, freedom, and evolution, but it is firmly grounded in empirical knowledge. It will also give you tools to be able to critically examine the language and knowledge that—in my experience as a computer science major—STEM usually uses when discussing people. If you want to read a shorter text regarding this last point on the dangers of STEM language when describing humans, you could read Mary Midgley's Biotechnology and Monstruosity.
A text that deals less with the ethical and social implications of theorizing about humans is The Tangled Wing.
There are many ethnographies that describe how people interact with technologies such as social media. These are more specific to the kind of technology that you're working on.

A good pattern/solution to the social web user issue of point whoring? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
Take any social website like Digg or Stack Overflow that somehow lets users reward points for stories, questions, etc..
What happens is quite similar to the process that lead to the rise of tabloid newspapers that feed only headlines and no content to its readers.
Users are usually smart enough to figure out strategies to maximize their point rewards regardless of whether that strategy harmonized with the goal of the website or not.
I identify the following problems
People will swamp more general and more entertaining questions with answers. Answering more specific questions requires actual domain knowledge.
Getting most points is often tied to involving most users. Given a random web crowd this unfortunately means mostly generic, subjective, argumentative and unspecific entries.
As the creator of a social website you have the unique chance to influence social behavior towards a favorable direction. I think that the influence the system has on the behavior of the people far outweighs the initial seed of users.
I'm interested in patterns/solutions that aim to solve this problem in terms of:
ranking algorithms
expert systems
limiting/creating ways of social interaction
information that is provided/hidden
In particular, given the perspective of Stack Overflow, how could one solve entries like "What's your favorite programmer cartoon" become the most popular entries (I pick this one because it is a good example for the undesired phenomenon).
The most important lesson with regard to the design of any social computing is that community dynamics problems cannot be solved purely by technological means.
In other words, whatever the solution you implement, if you have users to whom getting points (or trolling or getting involved in flame wars or whatever other disruption) is more important that participating in the community, that is what they will do.
When designing the solution, you "simply" have to make sure that there are sufficient benefits (badges, entertainment, information, rewarding feedback) in place for people who aren't in it just for the points. Then, if you are very lucky, you will attract the right kind of people.
This may seem trite, but it is one of the most importat results of CSCW research (Olson and Olson, 2000): unless users are prepared to collaborate/play fair/be productive, then no amount of technology is going to solve that problem.
This isn't fundamentally different from asking what's the best way to stop people from cash whoring in real life. Looking at it in that context, I suspect the only way to stop this behaviour is to remove the opportunity ie don't use points (or money).
The problem is that if you do that, there's no quantifiable reason to get out of bed.
Points and cash both measure social status and ability to influence others. Ability to sequestre resources is a primary sexual selection criterion, which is why greed is so powerful; it is a direct sublimation of the sex drive.
I find the voting system that Stack Overflow uses to be quite good. Other people essentially judge you as an expert or not. And the good answers bubble up to the top.
I'd stray away from punishing people who don't get voted for, and maybe have some threshold for those who get consistently voted down, losing points.
That said, with popular topics most people won't be bothered sorting through the flack to find the diamonds in the rough. So you are going to lose some good answers.
Also Stack Overflow seems to punish people who post lost of unvoted answers... My score went down after posting this as I have a few posts with 0 votes.
[Update]
In response to comments:
I think if you want more specific answers you have to dig deeper and look at a questions for a particular tag. I think the recent post What's your favorite “programmer” cartoon? has shown that people will swamp more general and more "entertaining" questions with answers as they are more like procrastination. Answering more specific questions requires actual domain knowledge.
As for why my score went down it may have been a bug. My score went from 91 to 81 when I posted this answer and then rose to 111 after that. As I'm not privy to the algorithm that Stack overflow uses, I assumed that that was what had happened.
It might just have normalised my score.
[Update 2]
I think that social networks have to police themselves. They are owned and run by the community by their very nature. Just looking at the AACS Revolt that happened on Digg last year is proof enough that you can't control it.
The trick is to have enough users who will mod down the garbage and mod up the good stuff.
Perhaps hiring a number of moderators who can do this full time, or even just giving a few people who have proven themselves to be good citizens moderator rights, with extra weight on their moderation, most people online live for this kind of recognition and some might be willing to do it for free as they will have become members of some kind of social networking elite.
The question is how do you stop them from abusing this power? As Stan Lee is fond of saying: With great power comes great responsibility.
It's probably hard to have a completely workable solution. Essentially, if the reason people attain points has a positive effect on the community, then point-whoring will increase the quality of the community over time.
Would a measure that decreases the rate at which points grow in proportion to the number of points attained be workable?
(i.e first 100 points are 'normal', next 100 take 20% longer to attain, etc)
Where there's a lot of people you should always expect the casual jerk or childish individual or attention whore or troll to show up. I don't think there's a method, a scientifically proved strategy, a technology to prevent this from happening. After all programmers are (almost always= people, also, and people tend to be quite diverse in behavior, communication skills, patience to bear the stupid, self-consciousness, sense of opportunity and even common sense. Being an heterogeneous group is something that might probably enrich everyone involved.
There shall be, nonetheless, a system to slow down the annoying people. Downvoting and closing question and answers might work - provided that the vast majority of the participants are well-behaved, responsible adults. If this is not the case... well, then everyone who feels offended would better bail out, because there's no value in attending a community where these tenets are widely disregarded.
The chance is that if the subject around which the community gathered in the beginning is quite selective in itself then a natural selection will occurr in the long term. I mean: if someone is REALLY interested in programming after a while he/she will calm down, ask more intelligent answers, give more ponderate answer, more polite comments...
This is fundamentally the same as making a startup.
The initial moderators, hired by the owner/ceo/founder(s), set the tone for the whole community.
Fortunately Jeff and Co. are moderating as well, so we can look at their example as we choose what stories to dismiss.
I find this to be a very difficult problem, though, as I too enjoy these offtopic conversations, and I know there will be backlash against me, individually, if I close some of these topics - I've already experienced it, and other moderators have to some greater degree.
But these are growing pains in any community, and there's no technical solution. Jeff et al need to cultivate the culture here so that the memes and DNA of the community are set and directed in a good direction.
But it's not as easy as that either, because until you start a community you don't know what it's capable of, or what it will become. You have to let it grow a bit itself, and exercise light authority so you don't stifle something that may be better (inevitably will be, actually) than your initial vision.
In other words, the key here is to solve the social problem with a social solution - select strong moderators that will set the tone and enforce it.
There is no way, technically, to prevent people from gaming the system, especially when there are other humans in the feedback loop - they will always find a way to game the other players into doing what they want.
-Adam
It is impossible to avoid entries that are in conflict with a specific social websites goal because one cannot prevent entertainment and procrastination. But given any entry it should be easy to decide weather it is harmonizing with the websites goal.
The solution could be to reward posters if they self police/tag their entry to the right category, and give all users a way to filter out categories they do not want to see.
For instance, on Stack Overflow most entertainment posts appear because people want to collect points (hypothesis). If this assumption is correct, then the solution of the pattern above would be that whoever tags his entry as entertaining gets twice as many points for upvotes. However nobody interested in entries tagged specific is going to see it when he has entertaining filtered out.
Perhaps there could be a "difficulty" or "obscurity" multiplier for answers to less popular questions.
People will point-whore: it's in our nature to crave recognition. Trying to stop them would be a lot of work, and if you succeed, many of the largest contributors to the site might then leave.
You need to make the behaviour you desire attractive to point-whores.
The problem is that everyone wants to be included. Look at questions with 100+ answers: Who is really going to read the last one? I'm not an expert in anything, if I compare myself to others on this site, but I still want to answer questions (see I'm doing it now).
I wish someone would start a forum for some of these issues.
Perhaps you should compute reputation on something based on the ratio of votes:views. This might discourage the populism going on and focus people's attention to providing answers across a breadth of less popular but still valid and relevant questions - questions that might actually be of interest to someone.
I would actually like to do some editing and tidying up of posts - Many posts could be improved by a bit of editorial work, filling out detail or providing links to other sources. However, without a dedicated exercise in karma-whoring (on what would be off-topic posts for me) it's very unlikely I would ever my rep up to the level where I have permissions to do this in my real areas of expertise where I might actually have something of value to say.
Separate "points" into different categories. If Digg or Reddit had a "funny/lame" vote in addition to a "interesting/uninteresting" vote, one could screen out things which have a "funny" vote that's higher than its "interesting" vote.
Slashdot has a moderation system that makes such distinctions, and you can filter it such that "+1, Funny" becomes "+0, Funny". Heck, you can even make "-1, Troll" work as "+5, Troll" (not that you should, but you could).
People will swamp more general and more entertaining questions with answers. Answering more specific questions requires actual domain knowledge.
First of all, I challenge your assertion that this is a problem. More general questions will have a more general audience and will be relevant to a greater number of people. Asking a question like "How do I do OBSCURE_TASK in LANGUAGE using TOOLKIT?" is indeed more specific and probably requires more specific knowledge to answer, but is likely only to be useful to people doing that task in that language in that toolkit. Should that float to the top when it's only of interest to a small number of people? Answered obscure questions can be found by searching. Browsing is better for finding general things.
Users are usually smart enough to figure out strategies to maximize their point rewards regardless weather that strategy harmonized with the goal of the website or not.
Yes, that's the cost of involving other people in the process. They will behave based on their own desires and motivations. If you truly want to enforce a reputation system based on whether or not it "harmonizes with the goal of the website," you want a dictatorship, not a community site.

Resources