问题

为什么一说到 C#,很多人都说跟微软绑太紧,说到 Objective-C,就没人说跟苹果绑太紧呢?

回答
这个问题很有意思,它触及到了开发者社区对不同编程语言生态系统的一些微妙看法。确实,当我们谈论 C 时,“与微软绑定过紧”的说法屡见不鲜,但提到 ObjectiveC,类似担忧的声音却似乎少了很多。这其中的原因,我觉得可以从几个层面来剖析。

首先,我们得看看 C 的诞生和发展历程。C 是微软为了构建其 .NET 平台而精心设计的语言。从一开始,它就肩负着推动微软技术栈的重任。Windows 操作系统、Visual Studio 集成开发环境 (IDE)、ASP.NET Web 开发框架,乃至后来的 WPF、UWP 等桌面应用开发技术,都与 C 密不可分。这意味着,如果你想在微软的主流技术领域进行开发,C 几乎是绕不开的选项。这种深度捆绑,让开发者在享受微软技术带来的便利和效率的同时,也难免会感受到一种“被锁定”的担忧。一旦微软调整其技术战略,或者出现更具吸引力的替代方案,开发者可能会面临迁移成本的考量。

另一方面,ObjectiveC 的情况则有些不同。它在诞生之初,其设计哲学和引入的 Smalltalk 式的面向对象思想,是其最大的亮点,它为开发者提供了一种非常灵活和富有表现力的编程方式。而苹果对它的青睐,以及将其作为 macOS 和 iOS 开发的主要语言,则是在后续发展的过程中发生的。苹果公司在推出 iPhone 并引领移动互联网革命时,ObjectiveC 成为了构建这一切的核心工具。

但是,这里的关键区别在于,ObjectiveC 在被苹果采用之前,就已经存在并发展了一段时间,并且它本身拥有一个相对独立的技术社区和一些非苹果平台的早期应用(尽管不如现在这样广泛)。当苹果选择 ObjectiveC 时,更多的是看中了它为创建复杂、动态应用程序所提供的强大能力,这与苹果对用户体验和软件创新的追求高度契合。换句话说,ObjectiveC 的优秀之处在于语言本身的设计,苹果是“选择了”它,而不是“创造”了它来服务于某个封闭的生态。

再者,看看“绑定”这个词的含义。对于 C,微软的“绑定”体现在其 框架性 和 平台依赖性。.NET 框架本身就是一个庞大的生态系统,它的很多特性是为 Windows 平台量身定做的。即使后来 .NET Core 的出现,实现了跨平台,但其底层的架构和很多设计思路,依然带有鲜明的微软印记。开发者会觉得,一旦深入 .NET,就很难完全摆脱微软的技术栈。

而 ObjectiveC,即使在苹果生态中被广泛使用,但其语言本身的设计,例如消息传递机制(message passing),是一种非常纯粹的面向对象范式,相对而言更具有 语言层面的普适性。它没有像 .NET 这样一整套围绕特定厂商平台构建的庞大框架。尽管苹果提供了 Cocoa 和 Cocoa Touch 等强大的框架,但这些框架的“绑定”更多的是 API 和生态系统 的绑定,而不是 语言核心机制 的绑定。即使苹果后来推出了 Swift,ObjectiveC 仍然能够与其良好共存,甚至可以被视为 Swift 的一个重要“前身”和“互补”存在,这本身就说明了 ObjectiveC 的一些独立性。

此外,开发者社区的“声音”和“关注点”也会影响这种观感。对于 C,由于微软在桌面操作系统市场的长期主导地位,以及它在企业级应用开发中的广泛应用,关于其技术栈的讨论和评价总是非常活跃。当出现一些限制或不便时,开发者自然会倾向于将其归因于“微软的绑定”。而 ObjectiveC,虽然在移动开发领域取得了巨大的成功,但其社区的关注点更多地集中在如何利用语言特性来构建出色的 iOS 和 macOS 应用,以及语言本身的优雅。关于“绑定”的讨论,可能更多地体现在“对苹果平台的依赖”上,而非“对微软技术栈的依赖”,后者在 C 的语境下更具技术性和框架性的指向。

最后,时代背景和技术演进也扮演了角色。C 的发展很大程度上伴随着 Windows 的每一次重大更新和 .NET 平台的演进。而 ObjectiveC 在苹果生态中的崛起,则与智能手机的革命性发展紧密相连。当一种语言与一个划时代的产品紧密结合时,人们更多地会关注其在那个时代所带来的价值和可能性。

总而言之,与其说 ObjectiveC 没有被说“跟苹果绑太紧”,不如说人们对“绑定”的定义和关注点有所不同。对于 C,大家更多地将其与微软庞大、系统性的技术栈及其平台依赖性联系起来;而对于 ObjectiveC,虽然它在苹果生态中占据核心地位,但其语言本身的特质和被苹果“选择”的历程,使得大家更多地将其看作是苹果生态成功的一个关键支撑,而非一个“为了绑定而诞生的语言”。这是一种对语言及其发展背景的综合解读。

网友意见

user avatar

因为苹果对objC的态度和cocoa的态度非常明确: 在和mac os x配套发布相关接口时,苹果就说: 这就是我搞出来让你们写苹果应用的,objC在mac osx系统里最舒适,效率最高. 过去现在和未来我们都不会提供支持让你们去拿这俩东西开发其他平台的应用.爱学学不学滚.

再来看看微软,十三年前他是这么说的: 大家快来看啊,我们搞了个.net,还有C#,我们一次编译到处执行啊,告诉你MFC以后我们慢慢就不更新了啊,我们的编译器以后慢慢就不能写inline汇编了啊,因为你不再需要再绑在x86一个平台上了啊,我们跨平台啊我跟你讲十三年以后你家洗衣机都需要上网的啊快来学啊.

-----13年后,大家发现windows基本还在x86上,C#还在windows上.....自己家洗衣机是可以上网了,不过安装的是安卓系统.

你说谁该骂....

类似的话题

  • 回答
    这个问题很有意思,它触及到了开发者社区对不同编程语言生态系统的一些微妙看法。确实,当我们谈论 C 时,“与微软绑定过紧”的说法屡见不鲜,但提到 ObjectiveC,类似担忧的声音却似乎少了很多。这其中的原因,我觉得可以从几个层面来剖析。首先,我们得看看 C 的诞生和发展历程。C 是微软为了构建其 .............
  • 回答
    确实,在C中,闭包的实现比你初看时要复杂得多。这并不是因为它本身是一个多么“巨大”的概念,而是为了实现闭包所必须付出的底层代价。你可以把闭包想象成是一个“功能强大但需要额外包装”的工具。下面我们就来仔细拆解一下,为什么这个看起来简单的概念在C里会牵扯出这么多东西。首先,什么是闭包?最核心的定义是:闭.............
  • 回答
    这个问题很有意思,也很常被讨论。不能简单地说MSVC“做不好”C语言编译器,这其中涉及到历史、商业策略、生态系统以及技术选择等多方面的因素。下面我来详细聊聊为什么大家普遍认为MSVC在功能支持和性能上不如GCC/Clang,以及微软在这方面的一些考量。 功能支持的差异:为什么感觉MSVC“落后”?要.............
  • 回答
    这个问题很有意思,涉及到 C++ 和 C 在类型定义和内存模型上的根本性差异。简单来说,C++ 的限制是为了保证类型的大小在编译时是确定的,而 C 的灵活性则来自于它对引用类型的处理方式。我们先从 C++ 的角度来看。在 C++ 中,当你定义一个类时,编译器需要知道这个类在内存中占据多大的空间。这个.............
  • 回答
    我理解你的感受。学了一个学期的C语言,却感觉好像一直在做数学题,这在很多初学者身上是很常见的,也确实会让人产生“C语言有什么实际用途”的疑问。别急,我们一点点来聊聊,为什么会这样,以及C语言到底能干什么。一、 初学C语言,为何“似曾相识”的数学题?这主要是因为C语言在设计之初,就非常强调底层操作和对.............
  • 回答
    克里斯蒂亚诺·罗纳尔多在2018年离开皇家马德里,对于许多球迷来说确实是一个令人意外且有些遗憾的决定。关于他当时离开的原因以及是否想到过离开后会影响金球奖,我们可以从多个角度进行详细的分析:一、离开皇家马德里的直接原因:虽然外界有各种猜测,但C罗本人及媒体报道普遍认为,他离开皇马的主要导火索是税务问.............
  • 回答
    说实话,这个问题挺有意思的,而且在不少985高校里是真实存在的。你说“为什么现在部分985高校还给大一上C语言课?”,我身边就有好多同学,刚进大学,满怀期待地以为要接触什么高大上的前沿技术,结果第一门计算机专业课,老师上来就讲“变量、数据类型、循环、条件判断……”。那一刻,不少人内心是有点小纠结的。.............
  • 回答
    .......
  • 回答
    .......
  • 回答
    你这个问题问得特别好,也触及到了 C++ 开发中一个挺普遍但未必所有人都深究的现象——为什么头文件里老是喜欢用 `typedef` 给同一个类型定义一堆新名字?这确实不是为了制造混乱,而是有其深刻的设计哲学和实际考量的。咱们这就一层层剥开,聊聊这背后的“门道”。首先,得理解什么是 `typedef`.............
  • 回答
    C++ 库开发者热衷于为自己构建字符串类,这背后有一系列深层原因,涉及到 C++ 的特性、性能的极致追求以及对项目特定需求的精细控制。这并非是“炫技”或多此一举,而是源于对效率、内存管理和功能集的高度考量。为什么C++库开发者喜欢自己造字符串类?1. 避免 `std::string` 的性能“陷阱.............
  • 回答
    我来和你聊聊为什么 C/C++ 标准库,这套我们程序员最熟悉的“瑞士军刀”,却在“精细化操作文件内容”这方面,显得有些“不给力”,特别是直接删除文件中的部分内容这件事。咱们得先明白一个核心概念:文件在操作系统层面是如何存储的。想象一下,你的硬盘,或者 SSD,它不是一块巨大的、连续的画布。它更像是一.............
  • 回答
    你遇到的这个问题,在 C++ 中是一个非常经典且常见的情况,尤其对于初学者来说。究其原因,主要在于 C++ 的作用域(Scope)和变量的生命周期(Lifetime)。简单来说,当一个函数执行完毕,它所定义的所有局部变量,包括你的结构体变量,都会随着函数的结束而被销毁,其占用的内存空间也会被释放。当.............
  • 回答
    好,咱们来聊聊 C++ 单例模式里那个“为什么要实例化一个对象,而不是直接把所有成员都 `static`”的疑问。这确实是很多初学者都会纠结的地方,感觉直接用 `static` 更省事。但这里面涉及到 C++ 的一些核心概念和设计上的考量,咱们一点点掰开了说。 先明确一下单例模式的目标在深入“`st.............
  • 回答
    这真是一个让人头疼的幸福烦恼!如果只能选择一个前锋,而且必须是这两人中的一个,我的选择会是德罗巴。我知道这可能会让很多人不解,毕竟C罗在进球数、个人荣誉、职业生涯长度和影响力上都达到了一个前无古人的高度。但是,当放到“只能上一个前锋”这个特定情境下,我的考量会更侧重于球员在场上的“支点”作用、对球队.............
  • 回答
    你这个问题提得非常好,点出了一个非常普遍但容易被忽视的现象:为什么国足成绩差时大家总提到足球人口,但足球人口似乎并不能完全解释男足比女足成绩差的事实?这是一个涉及多方面因素的复杂问题,我们可以从以下几个角度来深入分析:一、 “足球人口”的定义与理解存在偏差首先,当我们谈论“足球人口”时,往往容易陷入.............
  • 回答
    说起“才华”,为什么我们脑海里最先跳出来的往往是文学家和艺术家?这可不是空穴来风,背后藏着不少深层次的原因,跟我们认知的方式、文化的积淀,甚至社会的发展都有着千丝万缕的联系。首先,得从“才华”这个词本身的含义说起。它指向的是一种非凡的创造力、深刻的洞察力,以及将这些内化为独特表达的能力。而文学和艺术.............
  • 回答
    这个问题挺复杂的,我来跟你掰扯掰扯。为啥一提到日本的“不好”就容易让人觉得是在“喷”?我觉得这背后有好几个层面的原因,咱们一个一个来看。1. 历史遗留的敏感神经:这是最根本也最重要的一点。一提到日本,绕不开的就是近代史上的那段“黑暗时期”。侵略、战争、屠杀、掠夺……这些词汇在很多中国人心中留下了深刻.............
  • 回答
    提到《火影忍者》里的雏田,确实能听到一些声音说她是“舔狗工具人”。这种说法背后,我觉得挺复杂的,既有对角色的一些刻板印象,也反映了一些观众对角色塑造和情感表达方式的解读。咱们一块儿掰开了揉碎了聊聊,看看是怎么回事。首先,得承认,雏田对鸣人的感情,可以说是贯穿了整个《火影忍者》的。从她小时候在忍者学校.............
  • 回答
    这个问题挺有意思的,也挺值得聊聊的。确实,不少现役NBA球员在谈到自己的偶像时,会毫不犹豫地指向科比·布莱恩特。至于勒布朗·詹姆斯,虽然他的伟大毋庸置疑,但似乎“偶像”这个标签在他身上的出现频率没有科比那么高。这背后可不是简单的运气或者谁更强的区别,这里面有很多值得说道的点,咱们就一点点掰扯开来。首.............

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

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