是否有网络的高级语言?

时间:2009-08-30 19:31:01

标签: php language-agnostic frameworks high-level

序言

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

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

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

总而言之,这是一个彻头彻尾的混乱!

如果你考虑到两个目标:

  • 向孩子们教授网络开发
  • 保持团队合作

问题

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


背景

  1. 我是一名软件工程师,拥有超过15年的项目负责人和开发人员经验,拥有Broadvision,Autonomy,Enterprise Java和Oracle等技术。
  2. 近年来,我专注于开发社区网站,使用Drupal或PHP框架,如CakePHP。我喜欢网络开发,并享受所涉及技术之间的阻抗不匹配。我不可避免的结论是必须有更好的方式

    1. 我是两个儿子(13和9)的父亲,虽然我不希望他们成为程序员,但我希望他们理解计算机不仅仅是游戏机。我喜欢激励他们对网络开发进行修补以表达自己。
    2. 每当我向他们展示点点滴滴时,我都希望他们拥有一个工具集,让他们在周日下午的一两个小时内创造出“有趣”的结果。

19 个答案:

答案 0 :(得分:12)

GWT在某种程度上是一个高级工具包,让你编写Java来生成Javascript。

答案 1 :(得分:9)

Links是一种新的编程语言,旨在简化Web编程......链接通过为所有三层提供单一语言来缓解阻抗不匹配问题。系统为每一层生成代码;例如,将一些代码转换为浏览器的Javascript,一些代码转换为服务器的字节码,一些代码转换为数据库的SQL。“

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

答案 2 :(得分:8)

  

如何向孩子们教授网络开发?

网络开发中的一群孩子正在贬低我们的职业,因为现在几乎所有人都称自己为程序员,而我们越来越难以与他们保持距离并获得体面的薪酬。

掌握多种语言和技术?那是一件好事。加入开发者行列会有一些进入障碍。

补充:通过以下评论我可以看到我没有完全清楚自己。我对年龄一无所知,无论是10岁,30岁,50岁还是80岁。这都是关于态度的。一个人是否理解并接受这样一个事实:除了在某些设计师或CMS中使用鼠标移动控件之外,还有更多的职业。有很多知识可以获得,包括CS的基础知识,算法,数据结构,数据库,架构,可扩展性,维护,性能,可扩展性,可用性,营销以及更多属于专业软件开发人员研讨会的知识。我一个人对这些人一无所知,也没有采取行动教育自己,努力变得越来越熟练,他们不属于这个职业。并且让这种观点有偏见。

答案 3 :(得分:8)

网络编程本质上是一门多学科的工具。

这样做的主要原因是因为关注点分离...... HTML和CSS以及JavaScript,SQL等没有被一种语言混合在一起的原因是因为它们各自都有单独的目标,警告,陷阱和优势

您能想象尝试调试在同一源文件中混合在一起的SQL,CSS,JavaScript和PHP代码的网站吗?你可能已经遭遇了这样的不幸。可悲的是,有数千个这样的网站,这是一个完整的噩梦,试图调试或添加到这种混乱的表示,数据和结构的合并。

  

总而言之,一团糟!怎么样   应该教web开发   孩子?

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

当您掌握编程的基础知识时,可以轻松使用多种语言,选择新的语言,并且易于随时间变化。对于像网络编程一样不断发展和基于趋势的东西,这是一项非常宝贵的技能。

在我看来,新编程的人应该从较低级别的语言开始,比如C语言。人们应该学习编程的内在基本概念,并且应该在获得PHP或Python之类的更高级语言之前获得幕后发生的事情的知识。

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

答案 4 :(得分:6)

我认为你最接近的是.NET。许多语言都有很多框架,但我所知道的并不是所有语言都可以处理。除此之外,你不能试图让孩子们相信编程是在公园散步。这是一个艰难的职业,需要大量的学习和保持。我们与今天在这里的技术合作,明天就会消失。

如果你考虑一下,编程与木工或航空没有任何不同。几乎任何你选择的专业都需要你学习很多不同的东西才能更好地完成你的工作。

答案 5 :(得分:5)

你应该如何向孩子们教授网络开发?哇,这是一个棘手的问题。如何教他们手术,知识产权法或土木工程?或者就汽车机械,管道或总承包而言?

你有没有想过在芝麻街录像带弹出?

当你贬低他的专业时,Elmo不喜欢它。

答案 6 :(得分:4)

软件行业正在遭受不合格的个人的困扰,除了创造低质量的产品,同时使这个职业远离成为真正的工程学科。这不是获得认证的东西。对于上帝的爱,不要“教”任何软件开发。向他们解释,制作出色的软件只是凭借多年的经验和对过去和现有技术的丰富知识而产生的。你能做的最糟糕的事情就是引入另一个半生不熟的开发人员为其他人工作创造工作。告诉他们接受教育。我知道这不是你可能想听的答案,但我想要阅读。

答案 7 :(得分:2)

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

答案 8 :(得分:2)

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

这是一种即将推出的Web开发技术。看起来很有希望。在过去的几年里,我做了很多网络开发,如果我不得不做出预测,那么新的框架/语言/技术将成为网站在5到10年内开发的主要方式我会说将是Opa。

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

答案 9 :(得分:2)

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

答案 10 :(得分:2)

编程(PHP / JS)和文档格式(HTML / CSS)是两回事。 学习用PHP和JS同时编程也很困难。

您应该在开始时关注客户端上的HTML和JS。然后你可以让他们编程javascript on the server。这将使它只有一种编程语言,并开始专注于基于CSS的HTML。

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

答案 11 :(得分:2)

Django可以帮助您完成清洁工作。它专注于生产力。教学并不比任何其他语言/框架容易,但是这样看待它:当教授这个工具时,你的学生已经掌握了他们应该应该多么容易的知识。在学习Django之后,他们永远不会接受Java服务器或类似的噩梦。

答案 12 :(得分:1)

您需要不同的语言用于不同的目的。在大多数Web应用程序中,实际上还有很多,所以你需要不同的语言和解决方案。

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

显然这不会很好。 HTML并不完美,但有一个原因是它无处不在 - 它做得很简单。 CSS既复杂又简单,但定义可覆盖规则以表达您的设计的基本思想是合理的。并且SQL有时可能很难理解,但用这种方式表达数据库查询是富有表现力的,并且实际上效果很好。

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

在你的下一个项目中尝试简化:你真的需要一个数据库吗?你能组合视图层来简化,使用像GWT,Applets,Flash或.NET这样的东西吗?您是否真的需要在浏览器中提供内容(介绍CSS,HTML和Javascript复杂性),或者您只需编写应用程序吗?

答案 13 :(得分:1)

Web开发的多学科性质是让团队环境中的特别是工作愉快的事情之一。

为了团队合作,您自然会与一群具有各种专业知识的人聚集在一起,从UI /图形人员到DBA和系统管理员。即使在该组的单个层(例如后端程序员)中,每个人通常专注于不同的集合,例如,某些人可能具有更多的UI体验,而其他人则倾向于数据。

与在10个java程序员工作的房间里工作相比,我会在任何一天采用这种方式,而这些程序员都在使用某些中间件应用程序。

答案 14 :(得分:1)

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

最高优先级:(无特定订单)

  • 提高解决问题的能力
  • 团队合作

下一步:

  • 基本编程技巧(PHP,Python等)

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

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

逐步建立他们对所涉及内容的了解,而不是从蝙蝠中跳入深渊 - 他们很快就会被淹没。

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

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

  

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

这些都是他们自己的全部话题,你不能在一个块中咬掉它们。特别是如果你从0开始吸引这些人。在你建造一些有趣的东西之前,你必须学会​​建造一些平凡的东西。

HTML5可能会更像你正在寻找的东西,而不是Flash或Silverlight,但它还没有完全在这里......虽然正在建立支持。

宝贝步骤,奥拉夫 - 如果这是 The Matrix 你可以一次性下载所有这些信息,但我们不在那里......但是) - )

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

嗯,这是我的2美分

答案 15 :(得分:1)

掌握许多技术并不是一件好事。无论精英主义者说什么,我们都需要一个基于Visual Basic的网络。

答案 16 :(得分:0)

如果您只是想教他们编写动态网站,请将它们设置为w3schools.com上的HTML教程,一旦完成,找到一个体面的样式表,他们可以包含并使用PHP设置它们。这将使他们成为一种业余爱好,如果他们想要做更多,他们可以开始拼凑额外的知识,如CSS和JavaScript。

答案 17 :(得分:0)

Ruby on Rails在统一所有这些方面走了很长一段路,但是对于CSS来说它让你感到很冷(虽然可能有一些RoR的框架让CSS过时,但是你有另一种标记语言,我想),你仍然需要Javascript(虽然它确实为你写了很多Javascript,以及所有的DB代码)。

另一方面,关于你的孩子:编程是针对程序员的。在一个星期天的下午,在几个小时内把东西放在一起,你需要知道一个框架,并购买一些插件,并在没有太多工作的情况下完成所有工作。像Drupal或Joomla这样的东西,他们出售模板(Joomla你可以买几百包)和插件来做各种各样的事情。当失败时,你的孩子可能应该知道如何继续使用ODesk并花费100美元来完成你的框架。如果你想成为一名程序员,学习编程是很好的。否则,最好学习雇佣优秀程序员或购买优质预制组件所需的内容,并有现金支付。

关于孩子的最后一点:让他们玩电子游戏。这是他们可以获得的最好的培训,无论未来在计算机方面存储什么。视频游戏让您可以通过计算机进行调查,玩耍和放松。一旦你有了,学习HTML,CSS,Javascript和一些应用程序堆栈就是蛋糕。

答案 18 :(得分:0)

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

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

  <input type="text" ng-model="yourName" placeholder="Enter a name here">
  <h1>Hello {{yourName}}!</h1>