5

既然我正在工作中使用 Python/Django,我需要有一个家庭项目。我想学习一些新东西,所以我想看看 Java。

部署 Java Web 应用程序最受推崇的 Web 框架是什么?我不检查 ruby​​ on rails 的唯一原因是 ORM 和其他部分与 Django 有多么相似。

或者,有人认为我应该看看 seaside/smalltalk 吗?谁能解释我为什么要这样做?

如果有人可以为此提出很好的论据,我会考虑 Haskell。不过,我需要一个 Web 框架和数据库访问库来配合它。

如果我不那么习惯通过 x86/asm 的堆栈范例,我会考虑因素/第四。我也愿意听到对此的任何反驳。

另见:http ://www.reddit.com/r/programming/comments/9v3uf/asm_c_python_perl_lisp_scheme_programmer_looking/

4

12 回答 12

14

有了这么多技能,你为什么不学习更多你的舒适区之外的东西,比如木工或绘画,或者数百种与你的领域无关的其他技能中的任何一种。

在某些时候,所有语言都是相同的,你从学习另一种语言中几乎得不到什么好处。

然而,有了完全不同的东西,你将成为一个更加全面的人。我,一方面,喜欢绘画和高尔夫,尽管我不擅长其中任何一个——当我问我的高尔夫教练我的障碍是什么时,他说这是无法直接击球:-)

我发现我喜欢做我不习惯的事情,因为这是一种真正的新体验。学习另一种计算机技能在一段时间后很容易做到,因此减少了学习的乐趣。

不要误会我的意思,我喜欢跟上该领域的发展,但在大多数情况下,全新的技术对我的职业生涯没有任何帮助,因为我所做的大部分工作都是关于稳定的技术。你可能处于不同的情况。

于 2009-10-18T00:50:40.300 回答
6

如今, Haskell作为一个脑筋急转弯很受欢迎,尽管如果您已经了解 Lisp 和 Scheme,它可能不会对您造成太大伤害。它纯粹是功能性的,所以没有任何副作用。您必须使用 monad 来打印文本并执行其他需要特定顺序的事情。它也是完全惰性求值的,因此您可以在 Haskell 中创建无限列表,而不必担心内存消耗。

Haskell 平台可能不完全完整,但旨在成为 Haskell 的一组可移植库。它的包列表包括一些用于 CGI 处理和 (X)HTML 生成的包。

于 2009-10-18T01:34:51.447 回答
4

听起来你喜欢网络编程,所以 smalltalk/seaside 是一个很棒的选择。IMO 每个人都应该学习 smalltalk,即使他们从不使用它,seaside 是一个与您习惯的完全不同的 Web 框架。举例来说,Django 是关于 REST 的,而海边的哲学基本上是在说“让 REST 见鬼去吧”。

而且,如果您从未在基于图像的环境中编码,那么它的某些东西似乎……自然,甚至神奇。许多源自 smalltalk 的 IDE 功能已经在基于文件的语言 IDE 中实现,但它总是感觉像是一种不自然的嫁接,这些相同的功能感觉好像它们只是属于 smalltalk。

看看法罗。给它足够的时间来适应没有菜单栏的事实,看看它是否没有抓住你。

于 2009-10-23T10:27:16.357 回答
3

我确实建议使用 Java。当我在找工作时,我注意到有很多 Java 开发人员的职位空缺,所以那里有很多职位空缺,你可能有一天会有机会使用你的 Java 技能。

然后你应该试试 Scala。Scala 是一种类似于 Python 的语言,它使用函数式编程来制作非常可扩展的程序。与 Python 不同,在 Scala 中,您确实需要声明事物的类型。Scala 在 Java 虚拟机上运行,​​因此可以在 Java 商店中使用。

http://www.scala-lang.org/

我可能只是给你这个答案,因为这是我自己打算学习的下两种语言。

您可能还应该花一点时间玩弄 Javascript。Javascript 在某种程度上旨在成为“隐形 Lisp”,我想您会立即选择它。

http://www.crockford.com/javascript/javascript.html

http://bc.tech.coop/blog/030920.html

哎呀,玩得开心。写个游戏什么的!

于 2009-10-18T06:14:01.980 回答
2

从您的列表中,我会说您应该使用完全面向对象的语言。

你可以看看 Ruby,但我推荐 JavaScript,因为它提供了很多你可能不会想到的有趣的东西,比如对闭包、高阶函数和原型继承的支持——而且它有点有趣并且变得非常流行。

于 2009-10-18T01:27:22.753 回答
2

不过,我需要一个 Web 框架和数据库访问库来配合它。

如果您所有的编程都基于 Web 框架和 SQL 数据库,那么如果您切换语言,您只会用不同的语法解决相同的问题。

使用不同的数据模型 - Prolog、概念图、RDF、Linda/JavaSpaces、XQuery、HDF5、ASN.1 或不同的网络模型 - XMPP pub-sub、SNMP、零配置网格或 ZigBee 群构建一些东西启用 Arduinos。

也许看看像OzIoErlang/OTP这样的语言,它们是分布式的,而不是像你提到的那样主要是单一的。

于 2009-10-18T09:28:46.037 回答
0

Java Spring 框架呢?

http://www.springsource.org/

或者也许是NHibernate?

http://en.wikipedia.org/wiki/NHibernate

归根结底,由您决定。因为我只列出了其中的两个。当我专业地编写静态语言时...我尝试学习动态或脚本语言。反之亦然。

此外,我尝试学习一些完全不同或超出我的领域的东西......甚至可能是 Powershell 或 Korn shell 或 ActionScript。

于 2009-10-18T00:51:15.347 回答
0

部署 Java Web 应用程序最受推崇的 Web 框架是什么?

没有一个 Web 框架比其他框架更受尊重。Struts2、Spring MVC、Stripes 或 Wicket(基于事件)都是不错的候选者(我个人喜欢 Stripes)。但是对于持久性(Hibernate 或 JPA)和胶水(Spring),您需要更多。

Grails(Groovy on Rails)是另一个不错的选择。

或者,有人认为我应该看看 seaside/smalltalk 吗?谁能解释我为什么要这样做?

好吧,我想学习 Smalltalk 不会有什么坏处,但我认为选择 Smalltalk 而不是像 Java 这样的现代语言没有充分的理由。关于工具,除了VisualAge for Smalltalk ,我对这个领域一无所知,但就我个人而言,我真的远离它。

如果有人可以为此提出很好的论据,我会考虑 Haskell。[...]

看来我不是那个合适的人。

如果我不那么习惯通过 x86/asm 的堆栈范例,我会考虑因素/第四。我也愿意听到对此的任何反驳。

和上面一样。

于 2009-10-18T00:52:05.913 回答
0

我会建议掌握 Lisp(在一些相关的方言中),所以即使你的简历上有 Lisp 和 Scheme,深入学习也可能是值得的。请参阅http://www.paulgraham.com/avg.html了解原因。

否则 Prolog 可能会让你感兴趣。它与 SQL 有关,但用于编程而不是与一组有组织的数据表进行通信。

如果您想针对 Web 技术,我只有 Java 方面的经验。在这里,最新的 Java Server Faces (JSF) 允许使用 Ajax 更新页面,而 Google Web Toolkit 允许非常丰富的基于组件的网页。这些可能足够有趣,足以让你感兴趣,学习足够多的 Java 来发现它们很有趣 :)

于 2009-10-18T09:09:37.050 回答
0

我没有在您的列表中看到 C# 和 .NET 平台。我很惊讶还没有人提到它。

我在 C# 中工作了 5 年。我看过一些 Java 代码,但从未编写过代码。我相信 Java 与 C# 有点相似,因此如果您精通其中一种,我认为您可以在几天内掌握另一种。

一个想法可能是创建自己的语言/编译器。我想创建(或看到创建)的编译器将是一个具有面向对象语法的汇编语言级编译器,它与 Python 非常相似……但使其成为类型语言。您可以从基本的原始二进制类型 db、dw、dd 开始,然后添加到这些……函数和方法可以在高级代码中自由混合汇编语言。现在,我认为那将是一个有趣的项目?

于 2009-10-19T07:05:10.257 回答
0

一定要试试 Haskell 或 Smalltalk 或 Forth。

我会说 Smalltalk 将是最有用的,而 Forth 会让你远离 x86 asm 和 C 的废话。编码接近硬件的东西的方法不止一种。

于 2009-10-20T19:16:43.523 回答
0

Why don't you try OCaml? And if you ever happen (sadly) to return to .NET world - you will have knowledge of F# in your baggage.

于 2009-12-22T13:42:48.780 回答