会。
十年前,Pascal。我会精确计算每个数组和变量使用的内存,熟练地用非递归方法改写程序,最短的时间内自己实现各种排序,多源最短路径,求凸包和相邻点,动态规划,二分图匹配和网络流算法等等等等,同时考虑算法的最坏复杂度和最高项前边的那个常数。现在,我一个都不记得了是的现在列举这些名词我就是在装逼。
五年前,C。我会自认为炫酷的使用函数指针,强制类型转换,goto语句,宏来实现各种技巧(他喵的全是Linux kernel害的)。我挣扎在多线程,多进程和各种锁。我试着照ICC出来的汇编改程序。但你让我不看书写个红黑树出来我是做不到了。现在,你突然让我写个C程序我得想一下语法。(所以这里我还是在装逼。)
现在,Python。写之前习惯性搜一下有没有现成的库。不会自己去实现图的数据结构了,因为有NetworkX。不会自己去处理网络通信了,用Redis搞个发布订阅机制或者干脆实现个ReST服务都没几行代码。多线程?Gevent搞异步多简单速度还比你快。
我变笨了。
但是。
十年前我只能刷刷USACO和浙大同济的Online Judge。AC是最高目标。
五年前我只能写写自己用的小软件系统驱动什么的,或者通宵写个大作业。
现在我在研究用Evolutionary Optimisation在云平台上调度Scientific Workflow。
会什么和干什么,你觉得哪个重要?
======
感谢
@徐酿泉的意见。
我的意思并不是说因为用这些语言所以在干这些事儿,而是确确实实感觉到这些年自己的编程能力(或者说基本功,因为毕竟很多高级的技巧我也会的越来越多)在下降,而且我认为这和我用的语言越来越高级是有一定关系的。当然语言和做的事之间完全没什么必然关系。但是以前的水平高又怎么样呢?做出来的不过是没有人关心的玩具罢了。即使能力值降低了,不过既然现在在做也可以做更有意义的事了,谁还关心跑分呢。
日,我发现语文能力也下降了。。。
======
呃。。我又换Clojure了。。。
呃。。我又换Haskell了。。。
虽说不能绝对化,但是不同语言的社区训练出的程序员的能力侧重点还是不一样的:
1. C 程序员对于内存管理,计算机体系的理解能力;
2. C++ 程序员对元编程的理解能力;
3. Java程序员对于OO和设计模式的理解,对规模项目掌控的能力, 对虚拟机实现理解的能力;
4. Ruby程序员创造Web应用的能力;
5. Python 程序员在小中型Startup中应对各种问题的能力;
6. Javascript 程序员研究颠覆同行对Web交互认知的技术的能力;