Know Well More Than Two Programming Languages
来源:互联网 发布:电话号码数据 编辑:程序博客网 时间:2024/05/21 17:28
Know Well More Than Two Programming Languages
Russel Winder
THE PSYCHOLOGY OF PROGRAMMiNG: people have known for a long time now that programming expertise is related directly to the number of different programming paradigms that a programmer is comfortable with—that is, not that he just knows about or knows a bit of, but that he can genuinely program with.
Every programmer starts with one programming language. That language has a dominating effect on the way that programmer thinks about software. No matter how many years of experience the programmer gets using that language, if she stays with that language, she will know only that language. A one-language programmer is constrained in her thinking by that language.
A programmer who learns a second language will be challenged, especially if that language has a different computational model than the first. C, Pascal, Fortran— all have the same fundamental computational model. Switching from Fortran to C introduces a few, but not many, challenges. Moving from C or Fortran to C++ or Ada introduces fundamental challenges in the way programs behave. Moving from C++ to Haskell is a significant change and hence a significant challenge. Moving from C to Prolog is a very definite challenge.
We can enumerate a number of paradigms of computation: procedural, object- oriented, functional, logic, dataflow, etc. Moving among these paradigms creates the greatest challenges.
Why are these challenges good? That has to do with the way we think about the implementation of algorithms and the idioms and patterns of implemen- tation that apply. In particular, cross-fertilization is at the core of expertise. Idioms for problem solutions that apply in one language may not be possible in another language. Trying to port the idioms from one language to another teaches us about both languages and about the problem being solved.
88 97 Things Every Programmer Should Know

Cross-fertilization in the use of programming languages has huge effects. Per- haps the most obvious is the increased and increasing use of declarative modes of expression in systems implemented in imperative languages. Anyone versed in functional programming can easily apply a declarative approach even when using a language such as C. Using declarative approaches generally leads to shorter and more comprehensible programs. C++, for instance, certainly takes this on board with its wholehearted support for generic programming, which almost necessitates a declarative mode of expression.
The consequence of all this is that it behooves every programmer to be well skilled in programming in at least two different paradigms, and ideally at least the aforementioned five. Programmers should always be interested in learning new languages, preferably from an unfamiliar paradigm. Even if their day job always uses the same programming language, the increased sophistication of use of that language when a person can cross-fertilize from other paradigms should not be underestimated. Employers should take this into account and allow room in their training budget for employees to learn languages that are not currently being used, as a way of increasing the sophistication of the languages that are being used.
Although it’s a start, a one-week training course is not sufficient to learn a new language: it generally takes a good few months of use, even if part-time, to gain a proper working knowledge of a language. It is the idioms of use, not just the syntax and computational model, that are the important factors.
- Know Well More than Two Programming Languages
- Know Well More Than Two Programming Languages
- History of Programming Languages Must Know [Infographic]
- Ask Ars: Why are some programming languages faster than others?
- Why are some programming languages faster than others?
- Know why is more important than do what
- More than you ever wanted to know about GeoJSON
- TCP_CORK: More than you ever wanted to know
- Programming Languages
- programming languages
- get along well、carry out、accept apology、on behalf of、input、more than
- English Essay -- relating well to other people more important than studying hard at school
- Likelihood ratios for tests with more than two possible results
- Two more accurate ways to get time elapsed than clock()
- 172. Four eyes are more than two. 集思广益
- Programming / Languages / Comparison_and_Review
- Programming Languages Comparision
- Concepts in Programming Languages
- 微控制器、RTOS与网络,嵌入式物联网开发平台解读
- linux安装svn服务器流程
- 第八周 项目三(1) 分数类中的运算符重载
- 第九周项目四——我的向量类(数组)
- C++11中的原子操作(atomic operation)
- Know Well More Than Two Programming Languages
- pthread_getspecific和pthread_setspecific使用
- 分析如何查找Linux死机的原因
- windows与Linux间远程拷贝文件-pscp命令
- OJ矩形类定义(C++)
- C语言全排列
- Know Your IDE
- 自定义NSOperation
- 从data.dat文件中读取整数求和,结果保存到same.data文件中