23

前言

要建立动态网站,我们必须至少掌握四种语言:

  • 用于网页结构的 HTML
  • 用于布局和设计的 CSS
  • 用于交互的 JavaScript
  • 用于业务规则或动态驱动数据的语言

此外,还有用于持久存储的 SQL、用于会话和缓存的 Memcache、用于许多不同内容管理系统的 API。我们还应该考虑在构建 Web 应用程序时与 OpenID、Facebook、Twitter、OpenSocial 进行交互,以使其变得有趣。

总而言之,真是一团糟!

如果您考虑两个目标:

  • 向孩子们教授 Web 开发
  • 作为一个团队保持高效

问题

存在哪些统一 HTML + CSS + Javascript +(在此处插入高级语言,首选 PHP)的高级系统?


背景

  1. 我是一名软件工程师,在 Broadvision、Autonomy、Enterprise Java 和 Oracle 等技术方面拥有 15 年以上的项目负责人和开发人员经验。

近年来,我专注于开发社区网站,使用 Drupal 或 PHP 框架,例如 CakePHP。我喜欢Web 开发,并享受所涉及技术之间的阻抗不匹配。我得出的不可避免的结论仍然是必须有更好的方法

  1. 我是两个儿子(13 岁和 9 岁)的父亲,虽然我不希望他们成为程序员,但我希望他们将计算机理解为不仅仅是游戏机。我喜欢激励他们对 Web 开发进行一些修改以表达自己。

每当我向他们展示一些零碎的东西时,我希望他们有一个工具集,可以让他们在周日下午的一两个小时内创建“有趣”的结果。

4

19 回答 19

12

GWT在某种程度上朝着成为高级工具包的方向发展,让您编写 Java 来生成 Javascript。

于 2009-08-30T19:38:11.923 回答
9

Links是一种新的编程语言,旨在使 Web 编程更容易...... Links 通过为所有三层提供单一语言来缓解阻抗不匹配问题。系统为每一层生成代码;例如,将一些代码翻译成 Javascript 用于浏览器,有的写入服务器的字节码,有的写入数据库的 SQL。”

起初我不打算发布这个,因为它是一个研究项目,而不是一个生产系统;但是所有这些回答都说“就是这样,处理它”都在乞求反例。

于 2009-08-30T23:24:06.537 回答
8

应该如何向孩子们教授 Web 开发?

一群从事网络开发的孩子已经降低了我们的职业,因为现在几乎每个人都称自己为程序员,而我们越来越难以与他们保持距离并获得体面的报酬。

需要掌握多种语言和技术?那是一件好事。让加入开发者行列有一些准入门槛。

补充:通过以下评论,我可以看到我并没有完全清楚自己。我不说年龄,10岁、30岁、50岁还是80岁。这都是关于态度的。一个人是否理解并接受这样一个事实,即在某些设计师或 CMS 中,除了用鼠标移动控件之外,该行业还有更多的东西。有很多知识需要学习,包括 CS 基础知识、算法、数据结构、数据库、架构、可扩展性、维护、性能、可伸缩性、可用性、营销等等,这些知识都属于专业软件开发人员的工作坊。我一个人对这些一无所知,不去教育自己,努力变得越来越精通,他们不属于这个行业。并让这种意见有偏见。

于 2009-08-30T19:35:41.023 回答
8

Web 编程本质上是一门多学科的手艺。

造成这种情况的主要原因是因为关注点分离……HTML、CSS 和 JavaScript、SQL 等没有在一种语言中混合在一起的原因是因为它们各自有不同的目标、警告、陷阱和优势。

你能想象尝试调试一个将 SQL、CSS、JavaScript 和 PHP 代码混合在同一个源文件中的站点吗?你可能已经不幸这样做了。可悲的是,实际上有成千上万个这样写的网站,试图调试或添加到这种混乱的演示、数据和结构的融合是一场彻头彻尾的噩梦。

总而言之,一团糟!应该如何向孩子们教授 Web 开发?

我认为最重要的是教授编程的基础知识并使其坚持下去。变量、逻辑、指针、内存管理、算法、数据结构等。

当您掌握了编程的基础知识后,就很容易使用多种语言工作,学习新语言,并且很容易与时俱进。对于像 Web 编程这样不断发展和基于趋势的事物来说,这是一项非常宝贵的技能。

在我看来,刚接触编程的人应该从较低级别的语言开始,例如 C。人们应该了解编程的内在、基本概念,并且应该在了解诸如 PHP 或 Python 之类的高级语言之前了解幕后发生的事情。

我认为这种对编程教学的态度将产生培养更好的网络开发人员的效果,并提供一个进入障碍,将那些没有兴趣或智力的人淘汰出局。我认为这种态度的结果将是更好的开发人员、更好的软件,以及最终更强大的语言和工具。

于 2009-08-30T19:53:06.557 回答
6

我认为你会得到的最接近的是.NET。许多语言有许多框架,但据我所知,没有一个框架可以完全处理所有事情。除此之外,您不能试图让孩子们相信编程是在公园里散步。这是一个艰难的职业,需要大量的学习和跟上。我们使用的技术今天存在,明天就会消失。

如果你仔细想想,编程与木工或航空没有什么不同。几乎你选择的任何职业都需要你学习很多不同的东西才能做得更好。

于 2009-08-30T19:35:22.410 回答
5

您应该如何向孩子们教授 Web 开发?哇,好棘手啊。如何教他们外科、知识产权法或土木工程?或者就此而言,汽车机械、管道或总承包?

你有没有想过在芝麻街的磁带里突然出现?

Elmo 不喜欢你轻视他的职业。

于 2009-08-30T20:43:32.663 回答
4

软件行业正遭受着不合格的个人的痛苦,他们除了创造质量差的产品之外什么都不做,同时也让这个职业远离真正的工程学科。这不是要获得认证的东西。看在上帝的份上,不要“教”任何人软件开发。向他们解释说,只有多年的经验和对过去和当前技术的丰富知识,才能制作出出色的软件。你能做的最糟糕的事情是引入另一个半生不熟的开发人员,为与他们一起工作的其他人创造工作。告诉他们接受教育。我知道这不是您可能想听到的答案,但我希望阅读此内容。

于 2009-08-30T19:56:25.113 回答
2

我认为 Web 开发的问题在于它最初并不是为今天使用的东西而设计的。我们使用 HTML+CSS+JavaScript 以及任何生成它的服务器端技术在浏览器中构建富客户端应用程序。是的,它有效,但它很痛苦,尤其是那些恼人的浏览器不兼容。Flash 和 Silverlight 的存在证明了这一点。它们允许您使用一种技术构建您的应用程序,仍然在浏览器中。不过,需要为您的内容添加插件的缺点是显而易见的。

于 2009-08-30T19:54:01.780 回答
2

语言是您最不必担心的问题。他们处理的问题域很复杂。使用不同的语言实际上使事情更易于管理,因为a)它使边界明确并且b)可以针对域优化语言。

于 2009-08-30T20:26:16.317 回答
2

编程 (PHP/JS) 和文档格式 (HTML/CSS) 是两种不同的东西。同时学习 PHP 和 JS 编程也很困难。

您应该在开始时专注于客户端上的 HTML 和 JS。然后,您也可以让他们在服务器上编写 javascript。这将使它成为一种编程语言,并从一开始就专注于 HTML 而不是 CSS。

一旦他们学习了 JS 和 HTML 的基础知识,您就可以教他们更广泛使用的服务器端编程语言(如 PHP、Ruby 等)和 CSS。

于 2009-08-30T20:28:08.327 回答
2

Django可以带你部分了解它的清洁度。它专注于生产力。教学并不比任何其他语言/框架更容易,但要这样看:当教授这个工具时,你的学生会很好地了解它应该多么容易。在学习了 Django 之后,他们将永远不会接受 Java 小服务程序或类似的噩梦。

于 2009-08-30T21:35:44.947 回答
2

查看 Opa: http: //opalang.org/

这是一种新兴的 Web 开发技术。它看起来很有希望。在过去的几年里,我做了很多 Web 开发,如果我必须预测哪种新框架/语言/技术将成为 5 到 10 年内开发网站的主要方式,我会说将是欧巴。

文档很棒,社区很棒,教程和对项目团队提出的问题的响应非常好。总体而言,他们似乎在开发这个似乎无与伦比的新框架方面关注细节。

于 2012-03-28T04:37:37.983 回答
1

掌握很多技术并不是一件好事。不管精英们怎么说,我们都需要一个用于 Web 的 Visual Basic。

于 2009-08-30T19:55:28.267 回答
1

您需要不同的语言用于不同的目的。在大多数 Web 应用程序中,实际上发生了很多事情,因此您需要不同的语言和解决方案。

如果目标是统一一种语言,您可以这样做。您可以在服务器上使用 Javascript,然后使用document.createElement()它们构建页面并将样式直接应用于styles属性。在服务器上,使用 Javascript 将您的数据直接存储在文件中。

显然,这不会那么顺利。HTML 并不完美,但它如此无处不在是有原因的——它简单而出色地完成了它所做的事情。CSS 既复杂又过于简单,但定义可覆盖规则以表达您的设计的基本思想是合理的。SQL 有时可能很难理解,但以这种方式表达数据库查询是富有表现力的,并且实际上效果很好。

话虽如此,我并不是说存在或应该存在一种架构。不应该有。每个项目都应使用符合其要求的架构。

在您的下一个项目中尝试简化:您真的需要数据库吗?您可以使用 GWT、Applets、Flash 或 .NET 之类的东西组合视图层来简化吗?你真的需要在浏览器中提供你的内容(它引入了 CSS、HTML 和 Javascript 的复杂性),还是你可以只写一个应用程序?

于 2009-08-30T20:42:38.093 回答
1

我认为您的方法可能需要重新考虑。我认为这是它的本质,但我认为这种排序可能会更好。

首要任务:(无特定顺序)

  • 培养解决问题的能力
  • 作为一个团队富有成效

下一个:

  • 基本编程技能(PHP、Python 等)

在他们知道如何以个人和团队的形式解决问题后,他们可以转向具体问题,例如:

  • 客户端/服务器模型
  • 标记(HTML、XHTML、XML 等)
  • 样式 (CSS)
  • 客户端脚本(JavaScript / jQuery)
  • 服务器端脚本(PHP、Ruby 等)

逐步建立他们对所涉及内容的了解,而不是一头扎进蝙蝠的深处——他们很快就会不知所措。

此时您可以开始介绍文件 I/O 和数据库等内容。

这将为他们提供相当全面的技能。从这里他们可以真正开始学习。

此外,人们可能必须处理用于持久存储的 SQL、用于会话和缓存的 Memcache、内容管理系统的 API、OpenID、Facebook、Twitter、OpenSocial 等,以构建任何有趣的东西。

这些本身就是一个完整的话题,你不能一口气把它们全部咬掉。尤其是如果您从 0 开始带这些人。在您构建有趣的东西之前,您必须学会构建平凡的东西。

HTML5可能会更符合您的需求,而不是 Flash 或 Silverlight,但它还没有出现……尽管正在建立支持。

小步,奥拉夫——如果这是《黑客帝国》,你可以一次性下载所有信息,但我们还不在那里……还;-)

目前和不久的将来,Web 开发是许多不同技术的协同作用,共同提供有趣的用户体验。

好吧,那是我的 2 美分

于 2009-08-30T21:39:04.813 回答
1

Web 开发的多学科性质是让工作变得愉快的原因之一,尤其是在团队环境中。

作为一个团队,你自然而然地与一群具有各种专业知识的人一起工作,从 UI/图形人员到 DBA 和系统管理员。即使在团队的单层(例如后端程序员)中,每个人通常都专注于不同的集合,例如,有些人可能在 UI 方面有更多经验,而其他人在数据方面可能有更多经验。

与在一个由 10 名 Java 程序员组成的房间里工作,他们都在开发一些中间件应用程序相比,我每天都会接受这种多样性。

于 2009-08-31T00:35:58.413 回答
0

如果您只是想教他们编写动态网站,请让他们通过 w3schools.com 上的 HTML 教程,一旦他们完成,为自己找到一个看起来不错的样式表,他们可以包含并设置它们与 PHP 一起使用。这将使他们作为一种爱好开始并运行,如果他们想做更多,他们可以开始拼凑额外的知识,比如 CSS 和 JavaScript。

于 2009-08-31T03:52:04.100 回答
0

Ruby on Rails 在统一所有这些方面迈出了相当大的一步,但对于 CSS,它会让你感到冷落(尽管可能有一些 RoR 框架使 CSS 过时,但我认为你还有另一种标记语言),而且您仍然需要 Javascript(尽管它确实为您编写了很多 Javascript 以及所有数据库代码)。

另一方面,关于你的孩子:编程是为程序员准备的。在一个星期天的下午,要在几个小时内完成一些东西,你需要了解一个框架,购买一些插件,然后在不做太多工作的情况下把所有东西都启动起来。像 Drupal 或 Joomla 这样的东西,他们在那里出售模板(对于 Joomla,你可以购买数百包)和插件来做各种事情。如果失败了,您的孩子可能应该知道如何继续使用 ODesk 并花费 100 美元在您的框架上完成一些事情。如果你想成为一名程序员,学习编程是件好事。否则,最好了解雇用优秀程序员或购买优秀的 predone 组件所需的条件,并有足够的现金去做。

关于孩子的最后一点:让他们玩电子游戏。对于计算机方面的任何未来,这是他们可以获得的最佳培训。电子游戏让您可以使用电脑进行调查、玩耍和放松。一旦你有了这些,学习 HTML、CSS、Javascript 和一些应用程序堆栈就是小菜一碟。

于 2009-09-14T00:19:08.123 回答
0

angularjs可能是一种选择。它适用于单页应用程序并在 nodejs-stack 上运行并执行一些模板-javascript“魔术”。

示例(模板/代码):它(通过自动生成的客户端 js)将输入字段中的值绑定到标题(h1)。如果您在输入字段中键入内容,标题中的文本会更新。而且您不必编写前端js。

  <input type="text" ng-model="yourName" placeholder="Enter a name here">
  <h1>Hello {{yourName}}!</h1>
于 2013-08-07T11:28:51.457 回答