> "Programming is much closer to a craft than a science or engineering discipline. It's a combination of skill and experience expressed through tools"
I think the authors definition of Science, Engineering, and Programming is vague.
What is Science? What is Engineering? And what is Programming?
I don't know what kind of programming he is talking about, but we all know that designing Programming Languages is a science, and also programming compilers and interpreters... Well, how about Artificial Intelligence, isn't it also a Science?
And they all imply heavy programming and optimization.
I don't like to seem off-topic but I have recently posted an ask thread for a decent Game Theory introductory book... No one answered me unfortunately... So, would you please recommend me a good and decent game theory book (introductory level)?
My thinking has changed and became more mature when I started reading in the body of Philosophy and Science... I find the following the most enlightening books I've read so far...
What is your problem exactly?
Do you have problems approaching strangers because you feel something inside is holding you back? Or you have this problem because you THINK you NEED to do some social techniques in order do it?
You answer determine the solution to your problem.
If there is something in you which holds you back, you can overcome that by a simple search on "Social Inner Game", there are plenty of free materials on the web which can be helpful... But if your problem is the second one (you think you need to do something...etc), then it's is even much simpler... Check the following book: http://www.amazon.com/Art-SpeedReading-People-Speak-Language...
If your situation differs from these, please reply.
I've been developing with PHP for 2 years now and I didn't ever notice that we can make anonymous functions with PHP like that!! From where did you get that man??!! :D
I believe you need to first hon your programming and algorithmic skills as means of becoming a way better programmer.
After that, you need to involve yourself in the field of computer technology in general... Keep reading on Mashable about the current trends on the internet (Social Media, Social Networks, Social Apps...etc) ... The only thing you need is an idea which would fulfill a need or solve a minor/major problem... You'll get yourself going after that... ;)
Don't you think such language features are, actually, helpful for newcomers to programming and computer science?
IMO, let them learn the very basics of the basics with a lil-bit of abstraction and simplicity, and then dig even deeper!
I disagree with you on the notion that CS is a branch of Engineering and not mathematics. It's not that I'm with the view that CS is a branch of mathematics btw.
I'm with Edsger Dijkstra's point that Computer Science is a new emerging paradigm which should be approached with a Zen-like mindset... It depends on the natural sciences, however, take for example: mathematics, information theory...etc and on the other hand it depends on Engineering... Yet it's not an interdisciplinary field for any of the mentioned ones above! It's a field of its own making.
"Computer science is no more about computers than astronomy is about telescopes." - Edsger Dijkstra
I don't wanna sound off-topic but I liked your suggestions, they're great actually... Can you please provide me with some suggestions on the following topics?
An introduction to Programming Languages Design theory.
Computer Science Mathematics, introductions and advanced topics.
When I was in uni I got my introduction to programming in C. And it was the most funny and mind-opening course in my first year. So, I think it's subjective.
I agree that C++ is a complicated language, specially when you use Boost or Tools.h++, or the even make things worse. But when you teach beginners to code in C++ and only utilize STL, I believe it would be an interesting and challenging course. Plus, in an entry level course, you only need to introduce the basics of programming, which are (in an abstract sense) general logic principles and language agnostic.
No not really. SICP doesn't, whatsoever, inspires any sort of dogmatic beliefs. And I think it would be more appropriate to discuss the subject (SICP itself) rather than discuss what it's advocates says about it.
Simply put, it's more than an excellent book in the world of Computer Science. It is concise, clear, straightforward and challenging. And I think a text like that deserves every interest and respect from every computer scientist.
I almost agree with you that programming can be approached from a Scheme mindset... It can be really mind-opening.
But I think teaching programming from C++ or Python perspective can be of (almost) equal greatness...
You can do many cool things here and there... It only depends on the level of the course. I mean, if you are going to take an advanced course in programming languages design, learning Scheme, Lisp and other languages can be of great help; but if you want to give an introduction to programming - to people with no programming-related experience - C, C++ and Python are very good choices, I think.