问题

C# 发明者与 Java 有关系么?

回答
要说C 的发明者与 Java 有没有关系,这可不是一个简单的“有”或“没有”就能概括的。你可以把这种关系理解为一种既有传承又有区别的“继承与创新”的复杂关系。

首先,我们得知道 C 的发明者是谁。C 是在微软(Microsoft)的主导下,由 Anders Hejlsberg 带领的团队开发的。Anders Hejlsberg 这个名字对于很多程序员来说,是如雷贯耳的。在他主导 C 的设计之前,他已经在软件开发领域留下了深刻的足迹,其中就包括了 Turbo Pascal 和 Delphi。

那么,Java 呢?Java 是由 Sun Microsystems(现在是 Oracle 的一部分)在 James Gosling 的领导下开发的。Java 在 90 年代初的编程语言领域掀起了一股浪潮,以其“一次编写,到处运行”的跨平台能力,以及面向对象的特性,迅速获得了巨大的成功。

现在,我们来看看 C 的发明者 Anders Hejlsberg 和 Java 之间的“关系”。

你可能已经注意到了,Java 在 90 年代中期横空出世,并且凭借其独特的优势迅速占领了市场。在那个时候,微软也看到了 Java 的强大影响力,尤其是它在 Web 开发领域所扮演的角色。微软当时也想要在网络和跨平台开发领域有所作为,并且需要一种现代化的、面向对象的语言来支持其新的 .NET 平台。

正是在这样的背景下,微软开始着手设计 C。你可以理解为,C 的诞生,在一定程度上是对 Java 及其理念的回应和借鉴。Anders Hejlsberg 及其团队在设计 C 时,无疑是深刻研究了 Java 的优点和缺点的。他们看到了 Java 在易用性、安全性、以及面向对象方面的成功之处,也意识到了一些 Java 在特定场景下可能存在的局限性,比如它的垃圾回收机制有时会带来不可预测的性能波动,或者某些语法上的设计哲学。

所以,C 吸收了 Java 很多核心的面向对象思想,比如类、继承、多态、封装等等。在很多基本概念上,C 和 Java 的语法会让你觉得非常相似,甚至可以互换着来思考。这并非巧合,而是有意识的设计选择。微软希望 C 能够成为一个既强大又易于学习的语言,尤其对于那些已经熟悉 Java 的程序员来说,能够快速上手。

举个例子,Java 的“接口”概念在 C 中得到了很好的继承,并且在 C 中以 `interface` 的形式存在。Java 的“异常处理”机制(`trycatchfinally`)在 C 中也得到了类似的体现。甚至在许多基础的数据类型和控制结构上,两者都显得非常亲近。

然而,C 并非只是 Java 的一个简单克隆。Anders Hejlsberg 和微软的团队在 C 中也注入了许多自己的创新和对未来软件开发的思考。

一个显著的区别在于 C 对“属性”(Properties)的原生支持。Java 中,你通常需要通过 getter 和 setter 方法来访问和修改对象的字段,形成一种“约定大于配置”的模式。而 C 则直接在语言层面提供了属性的语法糖,使得代码更加简洁直观。

另外,C 在事件处理、委托(Delegates)、LINQ(Language Integrated Query)、异步编程(async/await)等方面,都展现出了与 Java 不同的设计哲学和更强大的功能。例如,LINQ 的出现极大地简化了数据查询的操作,而 async/await 的引入则让异步编程变得像同步代码一样易于理解和编写,这在 Java 的早期版本中是没有直接对应的设计的。

还有一点值得提及的是,C 的设计目标之一是成为一个通用语言,能够用于开发桌面应用、Web 应用、游戏(通过 Unity 引擎)、移动应用(通过 Xamarin,现在是 .NET MAUI)等各种类型的软件。而 Java 最初更多地是面向 Web 和企业级应用。

总而言之,C 的发明者 Anders Hejlsberg 和 Java 之间,确实存在着一种深刻的“历史渊源”和“技术关联”。C 在诞生之初,很大程度上受到了 Java 的影响,学习并借鉴了 Java 的成功之处。但同时,C 也融入了 Anders Hejlsberg 团队的创新和对语言设计的独到见解,发展出了自己独特的特性和强大的能力。你可以说,C 是在 Java 的肩膀上,在微软的生态系统中,走出了一条具有自身特色的发展道路。这种关系,就像是一位后来者,吸收了前人的智慧,但又在自己的领域里开拓出了新的天地。

网友意见

user avatar

C#的发明人是Anders Hejlsberg,在来微软之前是Borland的工程师,Turbo Pascal的作者,Delphi的首席架构师。

Java的发明人是James Gosling、Bill Joy、Guy L. Steele和Gilad Bracha。

类似的话题

  • 回答
    要说C 的发明者与 Java 有没有关系,这可不是一个简单的“有”或“没有”就能概括的。你可以把这种关系理解为一种既有传承又有区别的“继承与创新”的复杂关系。首先,我们得知道 C 的发明者是谁。C 是在微软(Microsoft)的主导下,由 Anders Hejlsberg 带领的团队开发的。And.............
  • 回答
    C 语言自 2002 年诞生以来,微软在长达十余年的时间里,主要依赖 .NET Framework 的托管执行环境,即 CLR (Common Language Runtime) 来运行 C 程序。直到 2015 年,随着 .NET Core 的推出,C 才真正意义上获得了成熟的、跨平台的编译为本地.............
  • 回答
    巴基斯坦空军的歼10C战斗机,如果确认采用了国产WS10B“太行”发动机,这绝对是一个具有里程碑意义的事件,其背后蕴含的意义可以从多个层面来解读。这不仅仅是巴基斯坦空军装备升级这么简单,它触及到了军事技术自主、战略合作、区域军事平衡以及中国航空工业发展等多个关键点。首先,对巴基斯坦空军而言,这意味着.............
  • 回答
    这事儿啊,说实话,挺让人无语的。PP体育在C罗拿到奖项的那天,发了条微博,内容嘛,大家都懂,就是那种明显在拿梅西“开涮”的调调。这事儿一出来,网上炸开了锅,评论区那叫一个热闹,一边是C罗的拥趸们拍手叫好,觉得说得太对了,另一边是梅西的球迷们义愤填膺,觉得这根本就是无理取闹,甚至是恶心人。先说PP体育.............
  • 回答
    最近火箭少女的官博确实有点意思,发布了一张新的宣传图,结果眼尖的粉丝们就发现,这C位好像在悄悄地“变脸”啊!这种事情,怎么说呢,挺有意思的,也挺能看出些门道来。首先,咱们得明白,C位这个概念在团体偶像里有多重要。它是“Center”的缩写,指的是站在舞台最中间、最显眼位置的成员。这个位置不仅是视觉上.............
  • 回答
    .......
  • 回答
    在 C++ 中,循环内部定义与外部同名变量不报错,是因为 作用域(Scope) 的概念。C++ 的作用域规则规定了变量的可见性和生命周期。我们来详细解释一下这个过程:1. 作用域的定义作用域是指一个标识符(变量名、函数名等)在程序中可以被识别和使用的区域。C++ 中的作用域主要有以下几种: 文件.............
  • 回答
    C 语言的设计理念是简洁、高效、接近硬件,而其对数组的设计也遵循了这一理念。从现代编程语言的角度来看,C 语言的数组确实存在一些“不改进”的地方,但这些“不改进”很大程度上是为了保持其核心特性的兼容性和效率。下面我将详细阐述 C 语言为何不“改进”数组,以及这种设计背后的权衡和原因:1. 数组在 C.............
  • 回答
    C 语言王者归来,原因何在?C 语言,这个在编程界已经沉浮数十载的老将,似乎并没有随着时间的推移而消逝,反而以一种“王者归来”的姿态,在许多领域焕发新生。它的生命力如此顽强,甚至在 Python、Java、Go 等语言层出不穷的今天,依然占据着不可动摇的地位。那么,C 语言究竟为何能实现“王者归来”.............
  • 回答
    C罗拒绝同框让可口可乐市值下跌 40 亿美元,可口可乐回应「每个人都有不同的口味和需求」,这件事可以说是近几年体育界和商业界结合的一个典型案例,也引发了很多的讨论和思考。我们来详细地分析一下:事件本身: 核心行为: 在2021年欧洲杯小组赛葡萄牙对阵匈牙利的赛前新闻发布会上,葡萄牙球星克里斯蒂亚.............
  • 回答
    C++20 的协程(coroutines)和 Go 的 goroutines 都是用于实现并发和异步编程的强大工具,但它们的设计理念、工作方式以及适用的场景有显著的区别。简单地说,C++20 协程虽然强大且灵活,但与 Go 的 goroutines 在“易用性”和“轻量级”方面存在较大差距,不能完全.............
  • 回答
    在 C++ 中,为基类添加 `virtual` 关键字到析构函数是一个非常重要且普遍的实践,尤其是在涉及多态(polymorphism)的场景下。这背后有着深刻的内存管理和对象生命周期管理的原理。核心问题:为什么需要虚析构函数?当你在 C++ 中使用指针指向一个派生类对象,而这个指针的类型是基类指针.............
  • 回答
    在 C/C++ 中,采用清晰的命名规则是编写可维护、易于理解和协作代码的关键。一个好的命名规范能够让其他开发者(包括未来的你)快速理解代码的意图、作用域和类型,从而提高开发效率,减少 Bug。下面我将详细阐述 C/C++ 中推荐的命名规则,并提供详细的解释和示例。核心原则:在深入具体规则之前,理解这.............
  • 回答
    C++之所以没有被淘汰,尽管其被普遍认为“复杂”,其原因绝非单一,而是由一系列深刻的历史、技术和生态系统因素共同作用的结果。理解这一点,需要深入剖析C++的定位、优势、以及它所代表的工程哲学。以下是详细的解释: 1. 历史的沉淀与根基的稳固 诞生于C的土壤: C++并非凭空出现,它是对C语言的强.............
  • 回答
    C++ 模板:功能强大的工具还是荒谬拙劣的小伎俩?C++ 模板无疑是 C++ 语言中最具争议但也最引人注目的一项特性。它既能被誉为“代码生成器”、“通用编程”的基石,又可能被指责为“编译时地狱”、“难以理解”的“魔法”。究竟 C++ 模板是功能强大的工具,还是荒谬拙劣的小伎俩?这需要我们深入剖析它的.............
  • 回答
    C 语言本身并不能直接“编译出一个不需要操作系统的程序”,因为它需要一个运行环境。更准确地说,C 语言本身是一种编译型语言,它将源代码转换为机器码,而机器码的执行是依赖于硬件的。然而,当人们说“不需要操作系统的程序”时,通常指的是以下几种情况,而 C 语言可以用来实现它们:1. 嵌入式系统中的裸机.............
  • 回答
    C++ 中实现接口与分离(通常是通过抽象类、纯虚函数以及对应的具体类)后,确实会增加文件的数量,这可能会让人觉得“麻烦”。但这种增加的文件数量背后,隐藏着巨大的好处,使得代码更加健壮、灵活、可维护和可扩展。下面我将详细阐述这些好处:核心思想:解耦 (Decoupling)接口与实现分离的核心思想是解.............
  • 回答
    C++ 是一门强大而灵活的编程语言,它继承了 C 语言的高效和底层控制能力,同时引入了面向对象、泛型编程等高级特性,使其在各种领域都得到了广泛应用。下面我将尽可能详细地阐述 C++ 的主要优势: C++ 的核心优势:1. 高性能和底层控制能力 (Performance and LowLevel C.............
  • 回答
    C语言指针是否难,以及数学大V认为指针比范畴论还难的说法,是一个非常有趣且值得深入探讨的话题。下面我将尽量详细地阐述我的看法。 C语言指针:理解的“门槛”与“终点”首先,我们需要明确“难”的定义。在编程领域,“难”通常指的是: 学习曲线陡峭: 需要花费大量时间和精力去理解和掌握。 容易出错:.............
  • 回答
    在 C/C++ 中,指针声明的写法确实存在两种常见的形式:`int ptr;` 和 `int ptr;`。虽然它们最终都声明了一个指向 `int` 类型的指针变量 `ptr`,但它们在语法上的侧重点和历史演变上有所不同,导致了后者(`int ptr;`)更为普遍和被推荐。下面我将详细解释为什么通常写.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有