很多人说用Python,Ruby,PHP等开发比Java快得多。
问题是,为什么?在编码,IDE,可用库......等方面,还是仅制作第一个原型的速度?
我对那些长时间使用Java而且长时间使用其他语言的人的答案感兴趣。
注意:我在Java之前为.Net开发过,是的,制作一些应用程序的速度更快,但从长远来看(大型Web项目)它将变得像Java。
答案 0 :(得分:3)
我认为快速开发语言的主要优点是动态类型,您无需为静态类型付出任何努力,例如:在Java的
public List<Tree<N extends Iterator, E super Interface1 & Interface2>>
= new ArrayList<Tree<N extends Iterator, E super Interface1 & Interface2>>();
......后来考虑类型擦除。
使用动态类型语言,您没有那么担心,但可以快速地删除。这样更快,并且通常会产生更易读的代码(更少的类型信息/噪声,请参见上面的示例)。但是你确实需要彻底的测试,但TDD&amp;通过测试的文件,它们现在通常都会被编写。
现在来看一些关于静态与动态类型语言的历史例子;)
当对C ++的不满情绪增加时,动态类型语言Smalltalk越来越受欢迎。但随后Java出现了。尽管Smalltalk已经拥有了良好的测试技术(xUnit诞生于Smalltalk领域),但彻底的测试只会在以后流行。我认为这就是现在动态语言兴起的原因。你需要进行非常全面的测试,例如只在运行时检测到消息调用中的简单拼写错误。
但也许现在类型推断变得更好,我们将再次出现类似情况,Scala将阻止动态语言的第二次兴起;)
更新:我发现这个彻底的programmers.stackexchange post关于静态与动态类型。它列出了很多要阅读的论文,并且还考虑了生产力。
答案 1 :(得分:1)
在使用PHP开发Java驱动的webapps之后,我已经开始使用PHP了,对我而言,这种差异主要来自设置的东西要少得多,而且因为像PHP这样的语言是松散类型的,这意味着你不必为转换而烦恼用线条和代码行看其他内容似乎有些过分。
java示例:
//omitting the lines and lines of stuff to set up a request and
//the try catch and the exeptions that *might* get thrown
String numberInput = request.getAttribute('numberInput');
int result=0;
if (numberInput!=null && numberInput.length()>0)
{
result=Integer.parseInt(numberInput)+1;
//but now we need to wrap this in a try/catch to catch NFE exeptions
}
//can't just echo it, need to set up an output thingy... ommitting all that too
out.print(result);
out.flush();
out.close();
用PHP实现同样的目的:
echo $_GET['numberInput']++;
//no setup or tries or catches required, it either works or shows nothing.
这对我来说是最大的优势,因为当我不得不使用验证用户输入时,我对java感到非常沮丧。每次我都要做很多事情,对于每一个输入,在PHP中只是不必要的。当然,验证仍然必须完成,在PHP中它更容易。
希望这有帮助。
答案 2 :(得分:0)
对我而言,主要优点很简单。在Python中,您可以简单地像句子一样阅读代码。即使有人向您展示了他的代码,您也可以在几分钟内找到它。 例如:
for item in list:
if item in other_list.keys():
new_list.append(item)
我认为这会严重缩短开发时间。
哦,第二件事。写得很好的文档。但我不确定Java文档是怎么样的。
我认为许多有用的软件包也是一个很好的优势。
不要忘记Python IDE或Ruby IRB。有时你可以用交互式方式测试一件事,这会花费你更少的时间。
答案 3 :(得分:0)
对于快速原型制作,语言越动态越好。像excel这样的东西对于快速原型设计是有益的。您可以拥有一个包含十几次点击的公式和图表。
但是从长远来看,您可能需要将系统迁移到更加企业友好的状态。这并不总是意味着你应该这样开始。
即使您从Java开始,您可能会发现由于性能原因,您希望将部分代码迁移到C.