Post
Topic
Board Bitcoin Discussion
Re: What programming language to learn?
by
ampkZjWDQcqT
on 10/07/2011, 03:28:33 UTC
You shouldn't go with your mind set to "learn a programming language". A "programming language" is only an expression of the underlying art, The art of computer programming, there even is a multi-volume book bearing that title. Programmers ought to dedicate their career to master this art. I recommend Structure and Interpretation of Computer Programs. TAOCP is a legend, it's very lengthy but if you have enough time you can't afford to not to read it.

Lisp is a family of programming languages which bear the essence of programming than have been lost in modern computer languages made for the computer pawns, the bottom 99 percentile which dare to call themselves a "programmer". Scheme is probably the most elegant computer language, it is used in the SICP (The book linked above). Learning the proper use of Lisp is a unique enriching experience for the artist programmer, even if you are working with other computer languages. C does exactly what it's supposed to do and does it well. Unfortunately you will probably have to learn to find your way in C++ if you plan to work on the Bitcoin reference implementation.

Quote
Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary. Scheme demonstrates that a very small number of rules for forming expressions, with no restrictions on how they are composed, suffice to form a practical and efficient programming language that is flexible enough to support most of the major programming paradigms in use today.

In advance, the reply to this is your biased point of view accusation is Of course!. Pretending human recommendations or opinions aren't biased is naive. However, people honest with themselves and their fellows will try to make their opinions biased toward what's perceived by the former as good, right or better and I'm no exception.

Regards.