文本编辑器使用啥语言?
Posted
技术标签:
【中文标题】文本编辑器使用啥语言?【英文标题】:What language to use for text editor?文本编辑器使用什么语言? 【发布时间】:2010-09-18 01:41:48 【问题描述】:我想用 C 或 C++ 编写一个(丰富的)文本编辑器,主要用于记笔记,很可能使用 GTK 或 Qt 作为 UI。
问题是我无法真正决定使用什么。我知道 C 和 C++,C 稍微好一点。我从未使用过 Qt,但我对学习完全没问题,而且我对 GTK 有一些经验。
您是否会偏爱任何特定的组合,为什么?特别是,您认为使用 C++ 有什么优势吗?还是 C 可以做得很好?
【问题讨论】:
哦,伙计,你最好得到 Emacs 并为它编写一个漂亮的 Qt 界面。就像 AquaMacs 中 Mac OS X 的 Objective-C 接口。无需重新发明***。 @Vlad:我想尝试为自己做一些不烦人/不太受限的笔记。因此,即使使用 org-mode,Emacs 也不是我想要的(我需要的不仅仅是纯文本)。 @houbysoft:那你想要的不是文本编辑器,而是富文本编辑器。 @houbysoft:您对执行此操作的众多现有软件包之一有什么特别的问题吗? IE。 OpenOffice 还是 Microsoft Word? 能否将 QT 重命名为 Qt? (Qt不是缩写——它是名字,QT通常用于Quick Time) 【参考方案1】:我自己在写一个编辑器,我也选择了C++和Qt。
原因:
C++ 具有 CPU 和内存效率。我讨厌充满激情的慢文本编辑器。 支持的库几乎都是用 C 或 C++ 编写的,因此我可以很好地与它们交互(如果需要,还可以扩展它们)。 Qt 是一个很好的、支持良好的跨平台/系统 GUI 库,它包含许多普遍有用的基类/算法。它让 C++ 使用起来非常有趣。【讨论】:
@"Gtk and Qt" -- 打错了,首先是“我正在考虑的选择是 Gtk 和 Qt”,为了更有意义,将其替换为“或”。 大多数“慢”文本编辑器只会在处理大文件时变慢,因此获得良好性能的关键不是内存效率,而是能够一次处理文件的一个子集。这可能有三个阶段:(1)选择性地仅渲染可见内容——渲染的位图使用大量内存,(2)操作小块而不必例如移动一半文件以插入一个字符,(3)甚至没有一次将整个文件放在内存中。作为一个近似值,当您的文件大小分别超过 10MB / 100MB / 1000 MB 时,将非常需要这些。 Qt 旨在与 C++ 一起使用。专注于学习面向对象,这个小项目可能对你的职业生涯有用。 我完全同意 Ben Voigt 的观点,采用您能想到的最慢的语言,并遵循他的建议,并将其与您选择的最快语言中的幼稚编辑器实现进行比较,第一个将表现出色第二个除了最基本的情况外,即使在那里,也不会有用户明显的差异(如果你决定使用需要它的语言,请给我启动虚拟机的成本)【参考方案2】:就个人而言,我会选择 C++/Qt。
我有偏见的原因是,与 GTK 不同,Qt 不仅是一个 UI 工具包,而且还提供了许多其他功能,如网络、数据库访问、xml 解析......这会让你受益匪浅。所有这一切都使用一致的 API。
Qt 的主要缺点是它是标准 C++ 库的替代品,从某种意义上说,它有自己的列表、字符串、映射、哈希......类。它们的 API 比 STL 好得多,而且 (IMO) 使用起来更愉快,但是如果你以这种方式学习 C++,那么如果你需要的话,返回标准 C++ 将变得更加困难。
如果您想用 C++ 和 Qt 简单地介绍 OOP,请参阅这本书(免费下载): http://cartan.cas.suffolk.edu/oopdocbook/
【讨论】:
感谢您的链接,看起来很有用。 GTK 确实不提供应用程序开发框架,包括容器、键值对等,这似乎是一个普遍的误解。我可以向你保证确实如此。 @ptomato 据我所知(不包括 GLib、GObject ......,但只有 GTK)它没有。引用该网站的话:“GTK+ 是一个用于创建图形用户界面的库。它适用于许多类 UNIX 平台、Windows 和帧缓冲设备。” GTK 不能在没有 GLib 和 GObject 的情况下使用。它们可能被拆分为单独的模块,但整个事情肯定是一个应用程序开发框架。所以,你真的不能算 GLib。【参考方案3】:C++ 可能比 C 更适合 RAD(快速应用程序开发)。这是因为它的附加特性,例如类和对象。 C 我认为这只会妨碍您,因为您没有类和对象之类的东西。
通常,OO 语言适用于 GUI,而诸如 C 之类的语言则适用于效率非常重要的低级驱动程序(尽管它有点值得商榷)。
【讨论】:
同时,成为一名经验丰富的 C++ 专家通常至少需要 5 年时间。 Qt,至少是几年前的样子,几乎与 C++ 无关,而且看起来像带有类的 C。更不用说对 std::(w)string、STL 容器和算法的重新发明了。 @Vlad:我强烈反对这 5 年——可能是一两年。但是@thyrgle:您可以在 C 中使用 OO 设计——该语言不支持它。太多人将 OO 视为一个过程,而不是一种设计理念。我对这个答案的不满程度不足以投反对票,但我认为它存在严重问题。 @Pete:我们一直都在学习。不管是什么语言,总会有新的东西要学。但我认为获得语言能力不需要 5 年。 (我自己只有大约 2.5 年的真正 C++ 经验,但它是我最喜欢的语言,我已经在这里回答了足够多的问题以获得它的金徽章......)【参考方案4】:C++ 是更好的 C。C++ 可以做 C 可以做的任何事情,此外还支持面向对象和通用编程设计范式。这里的“支持”是指语言本身及其周围的设施为程序员实现这些设计目标提供了轻松、愉快和生产力。选择 C++,你不会后悔的。
如果你选择 Qt,你也必须选择 C++,因为 Qt 是一个 C++ 库。如果你正在编写一个富文本编辑器,我不知道你在 Qt 的文本编辑器上还能做多少,它很好地支持富文本。您可能只需要专注于添加您感兴趣的特定领域的功能。
【讨论】:
您可以将 Qt 与 C++ 以外的其他语言一起使用。看这里:qt.nokia.com/products/programming-language-support以上是关于文本编辑器使用啥语言?的主要内容,如果未能解决你的问题,请参考以下文章