什么高级语言最像c?

时间:2010-06-26 07:05:41

标签: c programming-languages

我一直在学习C:这是一种美观,经过深思熟虑的语言。但是,编写任何类型的主要项目都是所以低级别。

哪种高级语言具有最类似C语法的语言 - 但没有在C ++中找到的所有混乱。是否存在?

14 个答案:

答案 0 :(得分:14)

在C ++中,您可以编写C代码并使其成功编译为C ++(主要是)。因此,虽然我建议你的“杂乱”一词既贬义又含糊不清,但你唯一的杂乱就是你自己选择写的东西。您可以使用C ++作为更大的工具包,而无需使用所有工具(如果您愿意,可以使用杂乱的工具)。

答案因此 C ++,无论你喜欢与否。大多数其他类C语言都添加了OO功能,这可能是你认为的混乱,但你没有得到任何东西,你需要有语法来支持其他功能。这些语言包括:

  • 爪哇
  • C#
  • 目标C
  • d

这些Objective-C可能是最像C-Like的,因为它是C语言不完全的C的超集。它也是OSX和iPhone / iPod Touch开发的首选语言,可能很有吸引力。

Java无处不在,但可能最好被描述为表面上的C样。 C#具有有限的跨平台支持,但是通过优秀的免费开发工具,Windows GUI开发的阻力最小。 C#也比C ++具有更简单但更具限制性的OO实现,因此可能符合您的要求,但它与C / C ++的相似之处可能会产生误导;它与Java的工作方式有着根本的不同。 D在某种程度上是一个利基市场,由一位作者开发(虽然曾经是着名的Zortech / Symantec C ++编译器的作者)。

关于它是“低级”和“乏味”,当开始“重大项目”时,你很少从头开始只有标准库和OS API可用,你会利用第三方和-house开发的库可以快速开发更高级别的功能。也就是说,OO方法通常更适合这种“代码重用”方法,当然C ++的标准库和第三方库更为广泛(尤其是因为它可以使用C库以及C ++库)。事实上,我建议除了对OO的支持之外,唯一能使C ++更高级通过类作为第一类对象的扩展性。尽管如此,它仍然适合作为系统级语言。

答案 1 :(得分:13)

  

哪种高级语言具有最类似C语法的语法 - 但是没有你在C ++中找到的所有混乱?

我将回答一个稍微不同的问题:

  

什么是C语言,因为它设计得很好,经过精心设计,就像C一样,它对系统编程有好处,允许人们在比C更高的级别编程,并且相对整洁?

我认为这个问题没有一个正确的答案,但这里有三位有价值的候选人(按字母顺序排列):

  • D。 D语言基本上是一个更好,更清晰的C ++。与C ++一样,D明确地设计为包含 lot 的功能,但人们希望以比C ++更清晰,更和谐的方式。程序员在更高级别工作的一个主要区别是内存由语言自动管理,编译器(和运行时系统)通过垃圾收集保证安全。

  • Go。设计精良,精心设计,得分非常高:Rob Pike是一位大师级设计师,已经练习了25年的特殊工艺。它的明确目标是整洁,并使系统编程“再次有趣”。 Go仍然是一种新语言,Rob从Squeak,Newsqueak,Alef和Limbo那里学到了很多东西。因为Rob知道一个伟大的设计是没有不必要的部分,Go是干净整洁的。它比C更高级别的主要功能是类型安全垃圾收集,以及一个优秀的并发模型

  • Java的。 Java有一个设计良好的核心(参见Jim Waldo的书Java: The Good Parts),但遗憾的是,任何成熟,成功的语言都会混杂起来。最适合高级编程的Java特性是 interfaces 垃圾收集例外

这里的常见线程是使用垃圾收集来减轻程序员的内存管理负担。这是提高生产力的重要因素。

这些语言中的每一种都有很多推荐它。我自己的口味是小而简单的语言,我非常钦佩Rob Pike的工作,所以如果我必须自己选择一个,那就是Go,尽管它是新的且未经证实。

答案 2 :(得分:12)

Google的Go language具有类似的语法(虽然我认为不同)和语义,但内置于语言中的垃圾收集,多态等等。

答案 3 :(得分:8)

D编程语言试图成为C ++应该存在的东西(而不是抨击C ++,这完全是我的主要语言),我引用网站的话说,“D是一种系统编程语言。它的重点是结合C和C ++的强大功能和高性能,以及Ruby和Python等现代语言的程序员生产力。特别关注质量保证,文档,管理,可移植性和可靠性的需求。“D的问题是相对较新的与许多语言相比,幸运的是它仍然可以使用C库来允许它访问大型预先存在的代码库。当然值得一试。

Java是另一种选择,但它明显慢于C语法。它在语法上非常相似,并为编写代码提供了一个很好的面向对象的环境。大多数人认为它比C和C ++更安全。它广泛用于企业。

Python虽然在语法上不像C,但它是一种非常受欢迎的高级面向对象编程语言,可以导入可能非常有用的C模块。

答案 4 :(得分:4)

可能是Java和C#...我认为Java更多了。

这不是语言 - 它是所有关于图书馆的。试试Qt(http://qt.nokia.com/)。它适用于C ++,我知道你说的是C,但我只是说你会发现自己编写的代码与用Java或C#编写的应用程序一样少(甚至可能更少!)。此外,他们是原生的和跨平台的。

所有关于图书馆。

答案 5 :(得分:4)

这个问题太广泛了,最好是社区维基。

但是,在我看来,C的主要区别在于它的紧凑性。整个语言可以在像K& R这样的小书中描述。人们可以毫不费力地记住所有语法细节(因为它们很少)并且它不会试图保护它的用户。

像C ++这样的语言更加巴洛克式。很难记住所有的规则和例外。我对Perl和Ruby也有同感。有许多事情需要记住,还有很多事情需要注意。

我觉得与Python的紧凑性相同(尽管可能没有C那么多)。几乎没有“特殊语法”,所有库和模块都以类似的方式进行操作。

这(可能与此问题上的大多数其他评论一样)是个人评价,绝不是最终决定。

答案 6 :(得分:4)

  

我一直在学习C:这是一种美观,经过深思熟虑的语言。但是,编写任何类型的重大项目都是如此低级别。

有些人会说第二句证明第一句的断言是错误的。

另一点是,这几乎是无法回答的。什么是“高级”语言?你对“亲近”的标准是什么?语法,计算模型,性能?您希望使用这种假设语言构建哪些应用程序?

如果您只想将自己局限于“看起来像”C的语言,为什么?作为一个已经失去了他所使用的编程语言数量的人,我可以告诉你,编程语言语法的差异通常非常不重要。在给定时间的情况下,您可以习惯几乎任何语法。

答案 7 :(得分:1)

这个comparison of basic instructions让您了解哪些语言彼此相似。

我会说PHP除了$变量之外最像是C,如果你可以将PHP语言与php平台区分开来。 Java在某些方面尝试,但过于强烈的面向对象与C类似。

答案 8 :(得分:1)

Javascript具有合理的C语法,它是一种非常流行的语言。 Javascript有很多怪癖,但它与C有一个强大的相似之处 - 它很简单。完整的Javascript规范非常短,语言非常强大和高级。不过,将它从一些丑陋的残骸中清除它会很棒。

答案 9 :(得分:1)

我只是要指出Pascal在语义上(虽然语法上没那么多)与C非常相似,所以有像Pascal,Modula 2,Ada和Oberon这样的选项,你可以在那里重用大部分的你已经知道的非平凡的部分,琐碎的部分是拼写。

但是,就工作前景而言,你最好坚持使用C#或Java。

修改

我还要补充一点,在杂乱的问题上,重要的是要弄清楚哪个杂乱很重要。 C在语言定义中的“混乱”较少,这是真的,但相关的混乱是源代码。请考虑以下内容......

//  C
struct mystruct *myvar;
myvar = (struct mystruct *) malloc (sizeof (struct mystruct));
myvar->a = 1;
myvar->b = 2;
myvar->c = 3;
call_something (myvar);
free (myvar);

//  C++
auto_ptr<mystruct> myvar (new myclass (1, 2, 3));
call_something (myvar);

关键在于语言定义中的“混乱”是有原因的。在编写库时,通过一些前期工作,可以避免很多工作(和杂乱)。即使你正在编写一个图书馆,你也可以从其他图书馆作家的前期工作中受益。

答案 10 :(得分:0)

我投票给C#。我不知道你的意思是什么“混乱”,但从可用性的角度来看,C#很好,因为它避免了C ++的一些繁琐的事情,比如必须两次基本上“声明”你的每个类的方法(在原型中进行原型设计)头文件,然后在类的实现中基本上复制相同的东西)。丢弃头文件在其他方面也很不错,比如在大项目中消除依赖冲突或避免循环引用。在C#中,编译器会处理所有这些(尽管您仍需要设置对其他文件或程序集的引用)。

我已经做了10年的C#而且我仍然想念指针,不管你信不信,在我看来,实际上调试更容易了!

答案 11 :(得分:0)

如果您要经常编程,最好知道明确不是之类的语言。了解python或ruby等高级脚本语言特别有用。如果你能像C语言中的程序员那样思考,你应该很好地学习这两者中的任何一个。 许多大型项目利用了python或ruby等高级语言的快速原型,同时也利用了低开销(快速)编译语言,如C / C ++。

答案 12 :(得分:0)

ActionScript 3怎么样?这很像Java。

答案 13 :(得分:0)

如果您认为C ++混乱,那么您只是不知道如何编写有效的C ++,因为没有人强迫您使用任何可用的高级工具。您可以完全用C编写一个C ++程序,加上您最喜欢的C ++特性(如AWESOME标准库)。这就是整洁的定义。杂乱的语言将是Java / C#,您必须将每个函数放在一个类中。那很混乱。