I have a sudden revelation today and I realized how much one should be familiarize with a language. Intelligence matters but understanding of a paradigm meant a lot too.
For example, what if a C programmer was asked to write in C++ and Java? This happens a lot these days. In fact a lot of brilliant C programmers now switched to C++ and Java for a living. Well, one easily noticeable issue would be a module can become overcomplicated with if. In the C world, programmer pride themselve for understanding multiple possibilities of how a function can behave. But for applications which use object-oriented programming, multiple ifs can cause an object to exhibit many unexpected behaviors - That is not good for reuse.
In a way, writing good OOP code require thorough understanding of I/O of each object. If there are 10 possible output options and each option can have two choices, there would be 2^10 number of behaviors. How would other classes be able to talk with these 2^10 possible behaviors then?
What about a C++ programmer or Java programmer were asked to write in C? Then a visible effects would be long names, unnecessary syntactic sugar, inefficient code. Since a lot of C applications have speed requirement, these bad habits will add up.
A smart person can certainly learn 100 programming languages if they want. But getting proficient in each language, that is another story. To tackle problem in real life, it's important to understand the skill and the philosophy behind a language.
This is my self-study page for the book, "Introduction to Algorithm", or commonly known as CLRS. This is also my diary page of how I struggle and grow in the programming world. I hope this blog can help amateurs or professionals, to improve their skills in programming, learning and living. As of Sep 12, 2011, I finished the "exercise read" of Chapter 2 (20110518) and 3 (20110608) and half of Chapter 4.
Shortcut for chapter specific information
Chapter4
(62)
chapter3
(41)
Chapter2
(22)
chapter6
(10)
chapter12
(9)
chapter15
(8)
chapter13
(7)
chapter7
(7)
Chapter10
(5)
chapter5
(5)
Appendix A
(4)
chapter8
(4)
Chapter19
(3)
Chapter22
(3)
Chapter34
(3)
Chapter35
(3)
chapter11
(3)
chapter16
(3)
chapter18
(3)
Appendix C
(2)
Chapter21
(2)
Chapter25
(2)
Chapter26
(2)
Chapter27
(2)
Chapter28
(2)
Chapter29
(2)
Chapter9
(2)
chapter14
(2)
chapter20
(2)
chapter23
(2)
chapter24
(2)
chapter30
(2)
chapter31
(2)
chapter32
(2)
Appendix D
(1)
Chapter1
(1)
Chapter33
(1)
chapter17
(1)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment