关于Django,Java,Python,HTML和网站开发的大图片问题

时间:2010-07-27 16:49:57

标签: java python html django mobile

我正在尝试处理有关网站开发的最新技术,并提出了几个问题。也许我最终会找到自己的大部分答案。我来自C ++和Windows开发的背景,通常我对网络开发的特殊性质感到困惑。

在关于它和Ruby(在Rails上)的在线研究之后,我专注于Django。从我读到的内容来看,ROR试图在幕后为你做所有事情,因此是缓慢且不可扩展的(并且过度使用并且没有为黄金时间做好准备)。所以我已经进入了Django - 下载了Python和Django,来自一个完整的Django站点的源代码,让它运行,等等。

令我惊讶的是Django的第一件事就是,关于实际演示似乎没有任何创新。所有创新都涉及数据库问题,业务逻辑,代码的可重用性等 - 但实际上并不是关于网站的创新视觉控制或图形的任何新内容。当你构建一个Django视图或模板时,它仍然会从我能看到的内容中广泛引用html(并且可能也是Javascript - 但我实际上还没有在Django模板中看到任何Javascript。)

我以前认为html可能与汇编程序类似,所以过去几年的传统应用程序开发人员可能知道甚至偶尔会使用一点汇编程序,但通常几乎不会使用它,而我可以看到, html(以及CSS和javascript)仍然必须由每个Web开发人员持续掌握和编写,无论他们是使用Django还是其他任何东西。这是真实的陈述吗?

特别是有一个网站对我来说作为最终用户代表了网站的最新技术水平,我很想知道这样一个网站的基础是什么。该网站是chess.com,并且有各种各样的设施可以与其他用户在线下棋,用户可以通过各种图形效果自定义帐户等等。它们最有可能是用于这样的网站的Java小程序吗? Django与这样一个网站的相关性如何。 Django会与Flash甚至Java applets一起使用吗?此外,当像chess.com这样的网站移植到移动设备上时,用什么来编写它 - 与桌面相同的开发工具或完全不同的东西(是的,我有很多事情要做。)

实际上是否有完全用Java编写的完整网站,可能使用的是非常高级的Java API?为什么有人会说(因为我在某处读到)他们鄙视Java,这就是他们进入Ruby on Rails和Django的原因。

关于Python(以及PHP),它们存在的理由是什么?首先,Python比解释C ++慢得多。为什么用Python或PHP编写的网站 - 平台独立性是这里唯一的问题。我不相信Python中的应用程序开发比C ++快得多(除了垃圾收集问题 - 这就是Python的主要原因 - 垃圾收集。)

所以无论如何,一堆新手问题 - 如果他们在这里没有回答的话,他们最终可能会回答大部分问题。也许他们与其他人有关。

8 个答案:

答案 0 :(得分:12)

嗯,你在这里问了一个问题清单。我会选几个重要的并回答。

至于像Python这样的语言的基本原理......事实是许多Web应用程序要么是I / O绑定的,要么是数据库绑定的。在这种情况下,如果您使用的语言没有C ++那么快,那么这并不重要 - 瓶颈在其他地方。除此之外,很多核心Python例程和数据结构都是用C编写的.Python用于驱动最高级别的逻辑,但大部分工作都发生在快速本机代码中。您可能会惊讶地发现,在我目前的工作中,我使用Python编写3D动画软件。当然,幕后发生的很多事情都是用C ++编写的。有一个名字:“替代硬和软层。”我们使用Python的原因非常简单 - 由于我们编写的API,我们的选择是Python或C ++,而我们在Python中的效率要高出几倍。我实际上会问C ++存在的理由是什么,但这是另一个主题(和flamebait;)。)

至于视觉呈现问题......传统上,应用程序的服务器端逻辑与浏览器内逻辑之间存在明显的分离,部分原因是您可以指望在浏览器中使用的唯一语言是Javascript(即使那时你实际上也不能指望它存在,抛开像Lynx这样的浏览器的存在。)所以你在Django之类的某种框架中编写了你的​​服务器逻辑,然后你用了一些Javascript框架来做你的前端的东西,(在过去的几年里)你使用像AJAX这样的东西让它们更顺畅地互操作。

这仍然是主导范式,但事情已经开始发生变化。许多服务器端框架已经开始包括以某种方式生成Javascript的工具。人们已经开始编写从其他语言翻译成Javascript的编译器。一个突出的例子是谷歌的GWT,它从Java转换为Javascript:http://code.google.com/webtoolkit/但是还有其他这种方法的例子。几年前,我在一个名为parenscript(http://common-lisp.net/project/parenscript/)的常见lisp库中做了很多编程,并且有一个Clojure(http://clojure.org/)库的开头用于做类似的事情。此外,最有趣的一组框架之一是Seaside / Magritte(http://www.seaside.st/http://www.lukas-renggli.ch/smalltalk/magritte),它们使用continuation来管理小部件的状态。方案和常见的lisp有类似的框架。

至于html就像汇编程序一样,我倾向于同意我编写html的情况。在这些情况下,我倾向于使用某种抽象层来生成html。但是世界上很多html都是由设计师制作的。其中一些使用GUI应用程序生成html,而更好的应用程序使用文本编辑器。但是大多数人都不想处理比html中的简单模板更复杂的事情,这就是他们所知道的。

关于网络发展,你必须要了解的一点是,http和html最初并不是为了完成它们今天所使用的各种事情而设计的。最重要的是,主流浏览器经常被打破。最重要的是,你无法控制用户可以使用的设施 - 他们可以使用任何浏览器,有或没有Java,Javascript,Flash等,以及任何bug集的排列,取决于浏览器。因此,只有在过去的几年中,事情已经足够稳定,人们对他们在客户端使用的设施保守一点。在可能的情况下,确保页面优雅地降级仍然是一个好主意。通用网页应该可以在文本浏览器中使用,当然,许多类型的Web应用程序无法在有限的环境中工作。

HTML 5将会动摇很多这样的事情。但是,要安全地假设每个人都在使用能够从HTML 5做任何事情的浏览器,并且在可以安全地假设每个人都在使用实现所有HTML 5的浏览器之前,还需要很长时间。无论如何,我建议你环顾一些不太明显的项目,例如Seaside。有很多实验正在进行中。但网络一直是这种事情的艰难环境。

答案 1 :(得分:10)

  1. Django没有尝试创新网站在浏览器中的显示方式。他们的目标是简化构建网站的过程。他们本可以采用新的方式在浏览器中创建小部件作为该目标的一部分,但他们没有。在经典的网站建设中,有很多痛苦可以缓解。

  2. 如果您正在构建网站,那么您将处理HTML。你对汇编程序的比喻很有意思,但在这个类比中,没有出现过流行的高级语言。这很可能是因为每一种更高级别的语言都必​​然会对可以表达的内容施加一些限制,而网络并不像那样需要整合。

  3. Python是一种比C ++更易于使用的语言,你真的可以更快地开发它。你应该试试看。自动内存管理是一个原因,但其他的是易于使用的数据结构,不必请求编译器的许可来做你想要的,广泛的第三方库来构建,以及一个无杂乱的语言,其中表达你自己。关于速度:网站不受计算限制,它们受I / O约束,因此语言的速度很少有所不同。

  4. 关于Web开发的临时性质。您来自Windows开发背景,其中一家供应商定义了整个环境,并且做得很好。 Web开发是临时的,因为Web本身是临时的。没有一个团体定义它,它是由许多人的贡献有机地增长的。

答案 2 :(得分:7)

  

所有创新都涉及数据库问题,业务逻辑,代码的可重用性等 - 但实际上并不是关于网站创新视觉控制或图形的新内容

正确。好的评估。这是一个问题吗?

  

html可能与汇编程序类似,因此过去几年的传统应用程序开发人员可能知道甚至偶尔会使用一点汇编程序,但通常几乎不会使用它

假。的确,甚至没有接近。所有浏览器都使用HTML。这不容易改变。

  

chess.com ...他们最有可能将Java小程序用于这样的网站吗?

在浏览器中使用view source为自己回答此问题。通常,您应该为您访问的每个网站执行此操作。您将学习很多关于Web和Web开发的知识。

  

Django是否可以与Flash甚至Java applet一起使用

是。我们使用FLEX和Django。

  

当像chess.com这样的网站移植到移动设备上时,用什么来编写它 - 与桌面相同的开发工具或完全不同的东西(是的,我有很多事情要做。 )

是。

  

实际上是否有完全用Java编写的网站,可能使用非常高级的Java API?

  

为什么有人会说(因为我在某处读到)他们鄙视Java,这就是他们进入Ruby on Rails和Django的原因。

有些人喜欢鄙视Java。他们的论点没有什么技术价值。

在使用Java和Python之后,你会发现Python不那么罗嗦了。您可以通过减少打字来完成更多工作。

  

他们的[Python PHP]存在的理由是什么?

他们比其他选择更好。对于人们需要做的具体事情,Python(或PHP)比替代品更好。对于“一切”甚至是一类广泛的事情,可能并不十分清楚。

我们做了很多临时数据处理。 Python的灵活性绝对优于其他选择。

  

首先,Python比C ++慢很多,被解释。

事实证明,这几乎不相关。网站不受架构中一个元素原始速度的控制。

  

为什么网站是用Python或PHP编写的

这比其他选择更容易。

  

平台独立是这里唯一的问题。

没有。

  

我不相信Python中的应用程序开发比C ++快得多。

你在Python上做了多少工作?你应该试试一年左右。通过比较,它使C ++非常繁琐且容易出错。

  

是Python的主要原因 - 垃圾收集。

没有。

答案 3 :(得分:2)

  

我以前认为html可能与汇编程序类似,所以过去几年的传统应用程序开发人员可能知道甚至偶尔会使用一点汇编程序,但通常几乎不会使用它,而我可以看到, html(以及CSS和javascript)仍然必须由每个Web开发人员持续掌握和编写,无论他们是使用Django还是其他任何东西。这是真实的陈述吗?

是的 - 如果你想要一个网站,有人必须写一些HTML。

HTML与汇编程序不同,因为您无法在HTML中为新语言编写解析器。 HTML只是一种用于为文本添加含义的声明性语言。因此,主要的是世界上的每个人都同意如何渲染它,以及标记的含义。新的东西最终可能会取而代之,但到目前为止,HTML已被证明具有相当的可用性和弹性。它也很容易学习和免费。

  

他们最有可能将Java小程序用于这样的网站吗? Django与这样一个网站的相关性如何。 Django会与Flash甚至Java小程序一起使用吗?

Django真的只关心网站的服务器端。它将客户端(即浏览器中运行的任何内容)留给您。 (除了内置的管理站点。)

  

实际上是否有完全用Java编写的网站,可能使用非常高级的Java API?

我认为这不常见。 Java applet几乎不再使用了,有些人(咳嗽 Steve Jobs 咳嗽抱歉咳嗽那里,我说“Steve Jobs”)认为Flash会以同样的方式

答案 4 :(得分:1)

除了其他人到目前为止所说的一切,只是用HTML创建一个非常基本的网站,一些CSS甚至一些JavaScript可能会让你对这三者的运作方式有所了解。像HTMLDog这样的地方是一个很好的起点。

此外,请阅读HTTP-protocol上的内容,因为这仍然是正常网页所使用的内容,因此定义了服务器和客户端在网络上进行通信的基础知识。

HTTP,HTML,CSS和JavaScript(可能会在很长一段时间内)与您的应用程序逻辑使用Java,Django,ASP.NET或PHP相同。如果您正在进行更多的Web开发,那么无论您选择哪种服务器端技术,这些都是相关的。此外,对浏览器的一般理解很好。它们如何处理HTML和CSS的可视化呈现,以及如何处理会话,cookie和请求。

答案 5 :(得分:1)

javascript的东西可能看起来令人生畏,但现在有相当不错的库是Free / OSS,最值得注意的是 jquery 。我认为jquery可以部分替代Flash。

您不需要那么多额外的JavaScript来高效地使用它。如果我必须使用像chess.com这样的界面,我肯定会使用jquery。

请参阅www.jquery.comwww.jqueryui.com

答案 6 :(得分:1)

  

从我读到的内容来看,ROR试图在幕后为你做所有事情因此是缓慢而不可扩展的(并且过度使用并且没有为黄金时间做好准备)。

嗯,首先,您不应该相信您在互联网上阅读的所有内容:

  1. 我不会说RoR还没准备好迎接黄金时段。与任何工具一样,RoR也有其用途。如果你正在构建像Twitter这样的网站,那么Rails可能不是最好的工具(正如Twitter发现的那样)。虽然每个人认为他们正在构建一个高性能网站,但大多数开发人员都没有,而Rails可能也适合。此外,Rails 可以扩展,并且已经做了很多工作来进一步改善这种情况。
  2. Rails 有时有性能问题的原因不是因为它试图为你做所有事情 - 更多是因为Ruby解释器本身的性质,(直到Ruby 1.9)相当缓慢,并且仍然没有其他解释语言那么快。
  3.   

    令我惊讶的是Django的第一件事就是,关于实际演示似乎没有任何创新。所有创新都涉及数据库问题,业务逻辑,代码的可重用性等 - 但实际上并不是关于网站创新视觉控制或图形的新内容。

    是的,但的创新。在Django和Rails等框架之前,很多后端工作都是手工完成的。 Django释放了开发人员的时间来处理更多的应用程序级功能。

      

    我以前认为html可能与汇编程序类似,所以过去几年的传统应用程序开发人员可能知道甚至偶尔会使用一点汇编程序,但通常几乎不会使用它,而我可以看到, html(以及CSS和javascript)仍然必须由每个Web开发人员持续掌握和编写,无论他们是使用Django还是其他任何东西。这是真实的陈述吗?

    是的,差不多。没有比HTML,CSS和JS更好的了。虽然我同意在某种程度上,HTML似乎是“低级别”,就像汇编语言是低级别一样,我认为大多数人会同意,相对于问题域,HTML可以更好地使用。

      

    Django会与Flash甚至Java小程序一起使用吗?

    你可以。 Flash和Java只是嵌入在HTML页面中,Django吐出HTML,所以这当然是可能的。

      

    实际上是否有完全用Java编写的完整网站,可能使用的是非常高级的Java API?为什么有人会说(因为我在某处读到)他们鄙视Java,这就是他们进入Ruby on Rails和Django的原因。

    除了applet之外,您还可以在Java中编写后端(例如,Java Server Pages)。我认为大多数使用过这两者的Web开发人员都同意Ruby和Python比Java更好。 Java Web框架有点痛苦,Java缺少REPL,Java有一个单独的编译步骤...... Java也是静态类型的;你可以整天争论动态类型与静态类型的优点,但是Rails和Django都利用Ruby和Python的输入和内省功能来使许多代码比Java更简洁。 (这是否使得Ruby和Python 比Java更好是主观的。)

      

    关于Python(以及PHP),它们存在的理由是什么?首先,Python比解释C ++慢得多。为什么用Python或PHP编写的网站 - 平台独立性是这里唯一的问题。我不相信Python中的应用程序开发比C ++快得多(除了垃圾收集问题 - 这就是Python的主要原因 - 垃圾收集。)

    表现并非一切。几乎每个人都想认为他们的代码对性能至关重要,但通常情况并非如此。正如其他几个答案所述,大多数Web应用程序都是I / O绑定 - 它们要么等待数据库访问,要么等待网络,这两种类型的操作都比CPU密集型慢几个数量级。任务,即使是慢速(呃)解释语言。此外,Web应用程序中的大量处理发生在字符串上,并且字符串处理在Python或Ruby中比在C或C ++中更好。 Python和Ruby也是更简洁的语言,它们都提供了一个可以缩短开发时间的REPL。另外,在Python和Ruby中编写C扩展模块很容易,所以如果你真的找到了一个需要优化的代码路径,你可以随时下载到C中。

    垃圾收集是一个优点。

答案 7 :(得分:1)

  

我以前认为html可能与汇编程序类似,所以过去几年的传统应用程序开发人员可能知道甚至偶尔会使用一点汇编程序,但通常几乎不会使用它,而我可以看到, html(以及CSS和javascript)仍然必须由每个Web开发人员持续掌握和编写,无论他们是使用Django还是其他任何东西。这是真实的陈述吗?

这就是我使用Seaside的原因。你仍然需要理解html和css和javascript,但至少在html上有一个编程语言抽象。我永远不会回到基于模板的系统。