BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / joke / #696463同步于 2015/1/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Joke机器人发帖

[码农向]从前有一个伐木工……

nuanyangyang
2015/1/29镜像同步42 回复
从前有一个伐木工,用一把普通的锯在锯树。他的朋友看他有那么多棵树要锯,于是给了它一把手提式链锯,对他说:这把锯非常强大,用它,你只要一天就能把这些树锯完。 第二天,朋友又来看这个伐木工,看他扛着链锯,哼哧哼哧地,像使用普通锯一样,手动地来回锯树。朋友看着干着急,说:“哥们儿,这是链锯啊!你看,你拉一下这根绳子,“轰”的一声,发动机就启动了,链锯自己会转。”那伐木工说:“习惯了……” ===== 从前有一个Windows程序员,他很讨厌打字,但是C语言程序太麻烦了,你必须定义每个变量的类型。 char *strName = "Peter"; int nAge = 42; double dSalary = 5000.0; void *lpObj = &some_object; 他的朋友说:现在C语言有auto关键字了,可以自动推导变量的类型。这个程序员听罢,高兴地回去改代码。第二天,朋友看到他的代码变成这样了: auto lpszName = "Peter"; auto nAge = 42; auto dSalary = 5000.0; auto lpObj = &some_object; 朋友看着干着急:你都用auto关键字了,怎么还用匈牙利命名法?变量名叫name, age, salary, obj多好?那程序员说:习惯了…… ==== 从前有一个C++程序员,他很讨厌内存管理,因为在C++里必须手动管理内存,否则经常有内存泄漏什么的。 class CPerson { char* m_name; int m_age; double m_salary; Obj* m_obj; public: CPerson(); virtual ~CPerson(); } CPerson::CPerson() { ... m_name = new char[256]; m_obj = new Obj(); } CPerson::~CPerson() { delete[] m_name; delete m_obj; } 他的老板说:我们用Java吧,有垃圾回收。你有C++的基础,给你一星期时间学学吧。那个程序员很高兴地开始学Java。第二天,老板看到他写了如下代码: public class CPerson { private char[] m_name; private int m_age; private double m_salary; private Obj m_obj; public CPerson() { ... m_name = new char[256]; m_obj = new Obj(); } @Override public void Finalize() { m_name = null; m_obj = null; } } 老板看了干着急,对他说:你知道Java的类名不需要像MFC那样加上C前缀吗?你知道Java的成员变量不需要加上m_前缀吗?你知道Java有String类型,比char[]好用得多吗?你知道Java会自动回收垃圾,而Finalize的效率非常低吗?那个程序员说:习惯了…… ===== 有一个Java程序员很讨厌Java的啰嗦。定义一个属性还要像JavaBean那样创建getter和setter。 public class Person { private String name; private int age; private double salary; private static final double INITIAL_SALARY = 5000.0; public Person(String name, int age, double salary) { this.name = name; this.age = age; this.salary = salary; } public Person(String name, int age) { this(name, age, INITIAL_SALARY); } public String getName() { return name; } public int getAge() { return age; } public double getSalary() { return salary; } public void setSalary(double newSalary) { this.salary = newSalary; } } 老板说:用Scala吧。和Java无缝集成,而且简练得多。你有Java的基础,给你两个星期学一学吧。第二天老板看到了他写这样的代码: object Person { private val INITIAL_SALARY: Double = 5000.0; } class Person { private var name: String = _; private var age: Int = _; private var salary: Double = _; this(name: String, age: Int, salary: Double) { this.name = name; this.age = age; this.salary = salary; } this(name: String, age: Int) { this(name, age, Person.INITIAL_SALARY); } def getName(): String = { return name; } def getAge(): Int = { return age; } def getSalary(): Double = { return salary; } def setSalary(newSalary: Double): Unit = { this.salary = newSalary; } } 老板看了干着急,说:你知道Scala不需要加分号吗?你知道Scala有primary constructor吗?你知道所有val成员都会自动生成getter,所有var成员都可以自动生成setter吗?你的程序完全可以像下面那样写你造吗?就一行你造吗? class Person(val name: String, val age: Int, var salary: Double = 5000.0) 那程序员说:酱紫啊,我习惯了……
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
perdaiz机器人#1 · 2015/1/29
看不懂 来自「北邮人论坛手机版」
Chon机器人#2 · 2015/1/29
习惯了
ciao机器人#3 · 2015/1/29
习惯了 【 在 perdaiz (袋子) 的大作中提到: 】 : 看不懂 : 来自「北邮人论坛手机版」 通过『我邮2.0』发布
huzezhong机器人#4 · 2015/1/29
我发现自己已经不能被称为程序猿了
shuimu1027机器人#5 · 2015/1/29
老板很厉害
smallti9650机器人#6 · 2015/1/29
黑得漂亮
wxt911genius机器人#7 · 2015/1/29
一看就是没学好树锯结构(逃
abdrew001机器人#8 · 2015/1/29
厉害。。。。
tomogirl机器人#9 · 2015/1/29
居然看懂了… 【 在 nuanyangyang 的大作中提到: 】 从前有一个伐木工,用一把普通的锯在锯树。他的朋友看他有...