我之前一直用 ASP.NET / C# 开发 Web 程序,因为一直处在 Visual Studio 的强大呵护之下,从来没觉得调试有啥问题,基本上不是刨到 .NET Framework 类库的 bug 级别的问题,一般都可以解决。
但觉得用 C# 写有些东西很麻烦,要写很多、很多代码。安全是安全了,但开发效率很低。
现在用 Python / Django 开发网站,因为 Python 是动态语言,感觉语法是简单了,很凝练。但是带来的问题是,经常出现低级错误。比如想当然的写错变量名,写错函数名之类,由于没有编译时检查,错误的代码一旦在某个 if..else 分支中,而测试时没有覆盖到,就说不准在某个时候引爆。
另外就是在 Django 中因为 Framework 处理的环节太多,经常代码里有个错误,经过层层处理,丢失了真正的异常信息,然后界面报出来一个什么 "索引错误" 云云。我已经无数次看到界面报索引错误了,不管实际的错误是什么情况:
可能是 url 映射文件中不能正确导入某个新建的 module,
可能是变量名写错,
。。。
所以 Django 很多时候报出的出错信息近乎无用。没有真正的调试工具,排错变得很困难!
这个时候我用的工具是 EditPlus -> Ulipad.
Ulipad 的提示做的比较到位,但是有时候也有不少 bug. 或者帮倒忙的情形,和 Visual Studio 的 Intellisence 相比,其使用手感还有很大的一段距离。这一点和大多数编辑器/IDE类似,包括 Eclipse.
直到我用上 Eclipse/PyDev, 才发现原来 Django 的程序也是可以调试的,熟悉的 Step In, Step Over,.. 再一次的,一切都在掌控之中,每个变量在断点的一霎那纤豪毕现。。。
我的结论是:
工具比语言重要。
一个好的工具可以大大提高软件质量。而动态语言虽然相比 C# 等静态编译的语言具备更多的灵活性,可以用很少的代码干很多事情,但缺乏编译时检查,可能给软件的可靠性埋下很多定时炸弹。
调试工具很重要,必须有调试工具,否则开发效率极低。
编辑器,不太重要。在上述都具备的前提下,有没有自动提示无所谓,当然有更好。
所以最值得期待的是:对动态语言开发提供强大支持的 IDE. 比如 Visual Studio 级别的。在这一点上 Eclipse + PyDev 还不够好用。
动态语言(IronPython, Ruby, ..) + 超级好用的 IDE: 无敌了。。。YY中~~
但觉得用 C# 写有些东西很麻烦,要写很多、很多代码。安全是安全了,但开发效率很低。
现在用 Python / Django 开发网站,因为 Python 是动态语言,感觉语法是简单了,很凝练。但是带来的问题是,经常出现低级错误。比如想当然的写错变量名,写错函数名之类,由于没有编译时检查,错误的代码一旦在某个 if..else 分支中,而测试时没有覆盖到,就说不准在某个时候引爆。
另外就是在 Django 中因为 Framework 处理的环节太多,经常代码里有个错误,经过层层处理,丢失了真正的异常信息,然后界面报出来一个什么 "索引错误" 云云。我已经无数次看到界面报索引错误了,不管实际的错误是什么情况:
可能是 url 映射文件中不能正确导入某个新建的 module,
可能是变量名写错,
。。。
所以 Django 很多时候报出的出错信息近乎无用。没有真正的调试工具,排错变得很困难!
这个时候我用的工具是 EditPlus -> Ulipad.
Ulipad 的提示做的比较到位,但是有时候也有不少 bug. 或者帮倒忙的情形,和 Visual Studio 的 Intellisence 相比,其使用手感还有很大的一段距离。这一点和大多数编辑器/IDE类似,包括 Eclipse.
直到我用上 Eclipse/PyDev, 才发现原来 Django 的程序也是可以调试的,熟悉的 Step In, Step Over,.. 再一次的,一切都在掌控之中,每个变量在断点的一霎那纤豪毕现。。。
我的结论是:
工具比语言重要。
一个好的工具可以大大提高软件质量。而动态语言虽然相比 C# 等静态编译的语言具备更多的灵活性,可以用很少的代码干很多事情,但缺乏编译时检查,可能给软件的可靠性埋下很多定时炸弹。
调试工具很重要,必须有调试工具,否则开发效率极低。
编辑器,不太重要。在上述都具备的前提下,有没有自动提示无所谓,当然有更好。
所以最值得期待的是:对动态语言开发提供强大支持的 IDE. 比如 Visual Studio 级别的。在这一点上 Eclipse + PyDev 还不够好用。
动态语言(IronPython, Ruby, ..) + 超级好用的 IDE: 无敌了。。。YY中~~