【问题标题】:What is wrong with using turbo C?使用 Turbo C 有什么问题?
【发布时间】:2011-04-24 15:16:38
【问题描述】:

我总是发现有些人(大多数来自印度)在使用 Turbo C。 我找不到任何理由使用这种过时的编译器...... 但是当我试图告诉他们使用现代编译器(gcc,msvc,...)时,我不知道该给出什么理由。

【问题讨论】:

  • 因为电脑没有“涡轮按钮”了。
  • 这是他们在印度大学教学时使用的,还有一些非常糟糕的参考书(“Let Us C”等)。
  • @Paul R,哈哈!好在他们现在有 SO 而不是那些书。
  • @Larry:我现在不关心 OP,但对我来说,主要担心的是印度大学正在大量培养编写 void main() 的编程毕业生,假设整数总是 16 位,并且认为未定义的行为是一件好事。
  • @PaulR 不仅如此!他们中的许多人使用基于 DOS 的“Lex”、“Yacc”、“prolog”、“lisp”...等版本。我亲眼所见,我是印度人 :) 不幸的是,“Let Us C”的作者被这里的许多年轻程序员认为是 C 语言中最聪明的人。不过我也想澄清一下,这类学生的比例仅占每年获得学位的计算机科学专业学生总数的 60%。

标签: c c99 turbo-c


【解决方案1】:

Turbo C 是仅限 DOS 的产品。这意味着它不再在 64 位版本的 Windows 上“本地”运行,并且必须在 XP 兼容性惩罚框中运行。

【讨论】:

  • 实际上,它也不能在 32 位版本的 Windows 中“本地”运行;此类可执行文件只能在 NTVDM 上运行。但是+1
  • 这就是为什么我把“本地”放在引号里。您可以在 32 位 Windows 上运行它而无需考虑太多,但在 64 位上则不然。
  • 哈哈,这实际上是我第一次听说它被称为“惩罚箱”,+1 让我开心。
【解决方案2】:

虽然有很多不使用 Turbo C 的理由(它过时、早于标准、生成 16 位代码等),但回答诸如“我如何在 Turbo C 中执行 X?”之类的问题是无效的。使用“只需使用 GCC”。这就像有人问“我如何用我的 1992 丰田做 X?”你说“买一辆更新的车”。

使用 Turbo C 的人可能这样做是因为这是一项要求,而不是因为他们不知道更好的东西。奇怪的是,对于一个编程类,他们提交的分配必须在该编译器中工作。当我给 C++ 作业评分时,学生使用什么编译器并不重要,但他们必须使用我使用的编译器正确编译和运行。

【讨论】:

  • 其实我会给出一个两管齐下的答案。如果可能的话,第一个方面是建议使用更好的编译器(并解释为什么这是一个好主意)。如果他们无法移动,第二个将是一个真正的答案。有很多关于 SO 的先例可以回答诸如“如何在 COBOL 中编写操作系统?”之类的问题。回答像“不要做白痴!” (当然要更圆滑)。
【解决方案3】:

我想说支持和标准合规性对我来说是两个大问题。

祝你好运,甚至找到 Borland/Inprise/Borland/Codegear/Embarcadero,或者他们现在自称的任何东西。如果你能让他们承认这些产品的存在,那就更赞了(尽管我曾在某个时候从 BDN 上的 Borland 博物馆得到它们)。

性能可能很重要,但我编写的绝大多数应用程序花费 90% 的时间等待用户(我不进行基因组测序、SETI 分析或蛋白质折叠 - 市场是很小)。

老实说,如果我可以在两种免费产品之间进行选择(显然钱不是问题),我总是会选择最好的(对我来说就是 GCC)。

【讨论】:

  • 哈哈哈,辣酱。这是 Embarcadero :-)
  • 我笑了,但说真的,他们还在那里,你甚至可以从他们的主页下载 Turbo C:edn.embarcadero.com/article/20841
  • +1 表示符合标准。我还要补充一个论点,即 Turbo C 现在是非常 利基市场,如果你想获得同行的支持,Turbo C 可能不是要走的路。而是一些正常的东西,比如 GCC 或一些微软可憎的东西。
【解决方案4】:

Turbo C 生成 16 位 X86 代码。当您在 16 位 x86 处理器上开发时,Kiiinda 很好。

去过那里。做到了。

更改的实际原因是:gcc 正在开发中,并已修复错误。它原生部署在现代操作系统和现代芯片上。

【讨论】:

  • 现在有人开发16位x86架构的新产品吗?似乎低端微型世界由 Microchip、Atmel、Cypress、Freescale 和 TI 等公司的 MCU 主导,所有这些都使用自己的(显着不同的)内核。
  • @Nick T,可能不是,但我可以想象破解旧的。甚至可以将整个板子放在 FPGA 上,包括“软”8086,以便能够运行遗留的东西。
  • 一些基于PC的嵌入式产品仍然存在,有时仍然需要更新其中的代码。更换带有一些自定义硬件的嵌入式 PC 并不像更换台式 PC 那样容易。
  • @NickT :为嵌入式系统设计的 NEC V30mx 是为 x86 16 位架构开发的原因之一,更重要的是,指令集低于 80386 :这是大多数现代编译器所不具备的不支持。通常,这些设备运行一个为嵌入式系统设计的特殊 DOS 兼容操作系统。
【解决方案5】:

这也是我的第一个编译器(4 年前),尽管当我了解到它不遵循最新标准并依赖于被认为已弃用或不良做法的功能时,我很快就切换到了 gcc。这些足以让我做出改变。

【讨论】:

    【解决方案6】:

    您应该使用像样的 C 编译器的最重要原因是性能。由于 GCC 对代码进行了积极的优化,编译后的程序的性能将比以前提高几十个百分点。

    【讨论】:

      【解决方案7】:

      Turbo C 的配置和使用要简单得多,可以在旧的 DOS 机器上运行。它的尺寸也很紧凑。我想这就是原因。

      但是,它确实很少利用现代处理器。

      【讨论】:

      • 不积极优化的较旧、较简单的编译器可能对编译器构建课程具有指导意义,该课程的重点是开始工作——但不一定高效——输出。您可以查看 Turbo C 的输出并了解如何分配变量、构造循环等。
      猜你喜欢
      • 1970-01-01
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      相关资源
      最近更新 更多