Sah*_*bov 11 c platform programming-languages
是否可以使用其他语言(如Java,C#或C++)以C编程语言编写所有内容.如果是这样的话,为什么现在学校不教C而不是Java?
好吧,我问的主要原因是因为我不想绑定到单一的编程语言和平台(.NET和C#或Obj-C和Cocoa).也许我把编程语言与框架混淆了?如果有人能为我澄清这一切,我肯定会投票给你答案.
Bil*_*eal 35
任何Turing Complete语言,例如C,C++,Java或C#,都可以计算任何可计算的语言.
Nor*_*sey 29
是否可以使用其他语言(如Java,C#或C++)以C编程语言编写所有内容.
大多.(不要被图灵的完整性分散注意力;这是一个红色的鲱鱼.)在C中有两组很难做到的事情:
管理记忆.在Java和C#中,您只需分配对象,系统会在不再需要它们时计算出来,并且内存会被回收.在C和C++中,您必须担心自己管理内存.(您可以选择Hans Boehm的libgc垃圾收集器,但许多C程序员不愿意承诺它,并且有些人报告难以让它工作.)
以类型安全的方式通过继承和多态重用代码.您可以通过明智地使用void *指针和函数指针强制在C中重用,但是您将失去编译时类型检查的好处.您无法获得与C++模板或Java泛型相同的保证. 这是编译时保证,而不是运行时保证,图灵完整性与此参数无关.
为什么现在学校不教C而不是Java?
(有些学校还继续教C,几乎所有学校提供的东西在C)为教学,爪哇对C的主要优点是:
您永远不必担心内存管理.这很重要,因为free对于大多数学生来说,理解堆分配的数据和何时调用是非常困难的.(见鬼,很多毕业生都很难.)
这是很多,很多更容易编写使用泛型多态代码; C缺少与Java类型检查泛型相当的东西.通过多态重用是编程中非常重要的概念.
简介:所有相关语言都是图灵完备的.但是,Java也提供了无法在C中提供的编译时保证,并且确实如果你不能用Java编写任何可计算的函数而不是任何其他语言,那么在Java中它更容易编写没有大量内存泄漏的代码.(由于图灵的完整性假设是一台无限的机器,它不必担心内存泄漏.但在现实世界中,在这里使用一场演出并在那里演出,你可能会遇到麻烦.我的学生会这样做.)
在开发应用程序时,您可能只使用C语言"实现"相同的功能,但与更现代的面向对象语言相比,所需的工作量可能要高得多.一切最终都会编译成机器语言.此外,使用C语言可能会大大减少使用设计模式编写应用程序的能力.
在决定使用哪种语言时,互联网上现代语言周围社区的丰富性也是一个巨大的增值.开源软件项目,致力于改善开发人员生活和应用程序质量的论坛和网站在现代语言中非常活跃.
这也没有真正说明各种现代语言的运行时间使开发人员生活更轻松的巨大价值.
这些只是我可以指出的几点.
是否可以使用其他语言(如Java,C#或C++)以C编程语言编写所有内容.
是的,不是.
是的,理论上:因为使用C,您可以编写Java,C#和C++编译器以及运行时环境(然后编写您可以用Java,C#和C++编写的任何内容)
不,在实践中:因为Java,C#和C++已经有了不存在的运行时库,并且不容易从C调用; 并且因为Java,C#和C++提供了许多高级功能(例如用于内存管理和OOP),这使得编程更容易......如果你的编程能力极限,那么一种使编程更容易的语言意味着你可以用它来做你不能做的事情.
是.你可以用你想要的任何语言做任何你想要的事情(好吧,差不多).有时,使您的生活更轻松的框架更容易使用一种语言或另一种语言,但计算机肯定不关心您编写它的语言.当然,总有例外.
一般来说,是的,你可以用几乎任何编程语言制作类似的程序(假设它有适合你的目的的库,例如窗口等).
但是,每种语言都有自己的优点和缺点,这正是Java成为主流教学语言的原因.Java比C更高级,因此它使开发人员不必执行可自动执行的困难任务(例如内存管理),从而使他能够专注于其他事情,例如算法,这可能是教学常见的原因.然而,具有这种优势的是惩罚,例如性能和内存消耗,这些是C可以非常有效的领域.