帮助语言选择

时间:2009-07-24 03:53:30

标签: programming-languages choice

三年多前,我写了一个Access数据库,用于我们的银行账户和预算。我曾经使用它并且喜欢它,因为它做了几件伟大的事情,没有其他任何东西。我决定把它写成一个独立的程序有几个原因。我会让一些家人和朋友使用它,后来,经过一定程度的调整后,可能会尝试推销它。我不希望超过Quicken,但谁知道,也许它会变成某种东西。

从我能收集的内容来看,可能需要先确定语言。所以我在这里询问并寻求合适的帮助。以下是我的考虑因素:

A)我肯定想要一个有吸引力的GUI。并没有什么“Windows”看起来。

B)易于分发和安装的包装当然是非常重要的。仅适用于Windows。

C)我的培训/经验水平:一些简单的VBA(Access数据库中的内容),最近采用了非GUI C ++类,如果我这个学期可以参加一个简介到Java课程和Java一起去。

D)我曾经以为我会使用SQL数据库后端(我说的那么对吗?)作为数据的位置,因为我之后使用Access数据库对其进行建模,我熟悉一点SQL。

E)我知道如果我想最终能够出售该计划,我需要注意图书馆的许可证。

F)目前,我肯定不会对任何基于网络的功能感兴趣,也不会对它在浏览器中运行感兴趣。

总而言之,我是一个愿意,几乎没有足够聪明,能力不足的新手,有一些轻松的经验和训练,他想将自己的Access数据库编写成真正的程序,并且也许有一天会尝试卖掉它。我应该使用什么语言?

我想我也应该问一下,看来我可能会遗漏一些重要的东西吗?非常感谢。

*我知道有人会就我是否应该尝试出售它(甚至是否可以)给我建议,但这不是我在这里的原因,所以请不要。

6 个答案:

答案 0 :(得分:4)

鉴于您的Access体验和您列出的要求,我建议使用.NET作为平台,VB作为语言,WPF作为UI框架,以及原始ADO.NET(+可能是数据集)用于数据库后端。您可能还想尝试LINQ to SQL并查看它是否对您有意义,但您可能会发现普通的ADO.NET更为熟悉。

修改

我错过了关于数据库的部分问题。对于您描述的任务,请考虑免费的SQL Server Compact Edition。它就像进程一样在进程中,因此没有麻烦部署服务等,而是通过SQL Express获得。其他免费的无服务器数据库选项是SQLite和Firebird / Embedded。

关于部署 - 对于一个简单的应用程序(只需要复制.exe和.dll文件并创建快捷方式),.NET安装项目可能就足够了,并且很容易创建。

答案 1 :(得分:2)

我看到你说两件相互矛盾的事情:

  

没什么“Windows”看。

     

仅适用于Windows。

您应该努力使您的应用程序看起来和任何Windows应用程序一样,特别是如果不考虑操作系统独立性。 human-computer interaction的基本原则之一是一致性会减少新用户学习您编写的应用程序所需的时间。

如果它看起来像其他所有应用程序,在大致相同的位置具有相同的图标,具有与其他应用程序相同的边界和颜色,那么您将利用用户已经知道所有这些事情的事实。如果您专门为应用程序设置外观并使用非标准图标,颜色甚至隐喻,用户将不得不学习新主题以及应用程序提供的所有功能。

如果您将应用程序编写为可换肤,并将其默认为常规Windows外观,那么用户可以在不学习新外观的情况下学习其功能,这样会更好。然后,一旦他们理解了应用程序,他们就可以切换到蒙皮模式,以便独立于功能来学习。

答案 2 :(得分:2)

鉴于您的专业知识和背景,使用Windows Forms作为界面的VB .NET将是您最容易接受并开始使用的。 SQL Server Express或Compact版本将满足您的数据库需求,类似于Access,它不会感觉100%foriegn,并且如果您需要更多内容,可以轻松移植到完整的SQL Server。

我还会提到C#作为一种可能的语言。作为一名没有VBA以外经验的新手程序员,你很难接受,但是C#中提供了 LOT 更多的社区支持,技术书籍和免费源代码。

我非常喜欢WPF开发用户界面,但学习曲线 非常 陡峭。这个时候不适合新手。

Win Forms具有极好的,易于使用的工具,用于构建最常见的接口类型,并且与Access中的表单设计器相似,您将能够快速开始。

在设计阶段花费额外的时间使业务逻辑与表示逻辑分离,这样你就可以用以后的东西替换Win Forms。

以下是official site for learning about Windows Forms and WPF的链接。新开发者有很多视频和练习以及其他材料。每天花一点时间研究那里的一些材料,你会收拾很多。 Microsoft也有其他技术的类似站点,例如SQL Server,ASP等。

确保您有一个不错的源控制解决方案。它将不止一次拯救你。如果你买不起自己,或者不想去设置和维护自己的麻烦,那么像CodePlex这样的在线地方如果你让你的项目开源就可以免费提供源代码管理

祝你的项目好运。

答案 3 :(得分:1)

我建议来自TrollTech / Noika的QT 4.5

A)QT Windows可以剥皮

B)我不太清楚如何分发QT,但有一点是它是跨平台的

C)我发现QT中的编码GUI很简单,并不像MFC那样做作;这些教程已经足够开始了。

D)QT有SQLlite(允许你拥有一个不需要服务器的数据库),并且有用于与SQL数据库连接的包,但我不确定Access

E)与Nikola合并后,QT 4.5现在是LGPL,因此只要您链接到库,就不会有分发软件的问题。根据LGPL,必须发布对QT 4.5文件所做的更改。

另一点--QT 4.5具有强大的图形程序视图/场景架构,信号/插槽机制使编码GUI和他们的数据类更改比MFC或甚至C#WinForms中的代表更容易。

答案 4 :(得分:1)

Python

  • 由于你不太可能遇到有影响的数据量(如果是这样,I / O,而不是代码可能是瓶颈。)你应该得到一种尽可能快速开发的语言。
  • Python有很好的标准化db库,以sqlite3开头,因为db只存在于一个文件中。如果需要,可以稍后将其换成oracle db。
  • 它还有许多GUI选项,因此具有保持GUI分离的规则更容易。 (无论如何,你应该......)
  • 非常好的多平台支持,甚至一些GUI替代方案可以管理它。 (但有些人比其他人好)

Python也很友好,因为做错了感觉错了,做正确的事情感觉正确。我甚至无法解释该功能的奇迹。

答案 5 :(得分:0)

我建议您将应用程序编写为Web应用程序,前端使用macromedia flash,后端使用java。听我说。

A)。 Flash拥有一个非常丰富的光滑外观ui小部件库。设计flash ui的外观和感觉就像点击和拖动一样简单。非常插画家喜欢。

B)。开箱即用的闪存是跨平台,适用于所有版本的Windows。您还可以获得osX,linux和移动设备用户。无需担心安全权限,损坏的安装或奇怪的dll。此外,如果您需要发布补丁,则更新Web服务器上的Flash应用程序,所有用户下次使用时都会获得新版本。您无需担心包装或运输。

C)。未来的软件可能会越来越以网络为中心。虽然Web应用程序可能无法取代所有应用程序,但它们肯定会取代最多现在发展这些技能很重要。

d)。是的,sql是对访问的改进。有很多sql专有技术,SQL是一个不错的选择。