[转载]最后的侠客:当Borland已成往事

从跳表无锁插入到元数据原子发布:现代 C++ 存储内核如何跨越物理 I/O 与 CPU 内存模型 在现代工业级 LSM-Tree 存储引擎的内核设计中,C++ 工程师对“无锁化(Lock-Free)”与“纳秒级确定性”的极致偏执,几乎被雕刻进了每一行代码里。为了抹平动态内存分配器的碎片与互斥锁竞争,我们在写入路径上采用紧凑的 Arena 内存池与无锁单写多读跳表(),将插入操作的延迟死死压制在 CPU 缓存流水线的物理极限;为了让前台点查(Point Get)彻底告别昂贵的全局锁争用与特权级上下文切换,引擎巧妙融合了线程局部缓存( 阅读详情

[转载]最后的侠客:当Borland已成往事
最后的侠客:当Borland已成往事
2006.02.15 来自:Delphi园地 

老方说偶占着Borland分类的位子,却很久没谈Borland,想想也是。不过现在的Borland还有什么可谈的呢?

昨天看了高论发的关于Borland最新的IDE——DeXter的一个DemoVideo,令狐8了一篇关于Borland的东东。对于Borland这个公司,我们的观点是基本一致的。

Borland已经变了。不再是以前那个意气风发的江湖侠客,而是一个脑大肠肥的地方富贾;他拥有的,不再是那些充满灵气的开发工具,而是那些沾满铜钱味的企业解决方案。

Borland,不再是我以前认识的那个Borland了。

不过作为一家商业公司,利润远比技术理想更重要。当开发工具带来的利润越来越少时,在股东的压力下,必须要有新的利润增长点才行。

七八年前,Borland第一次尝试从开发工具领域向企业应用领域时,公司甚至为此改了个名字叫Inprise。结果Anders离开了,Borland差点把自己玩死。

前一两年,Borland又开始转向企业解决方案,不过这次是针对软件开发企业,倒还没有偏离太多。但结果又是Black.Stone, Chuck.Jazdzewski等人离开了。

与此相反的,Borland的每一次辉煌,都与开发工具紧密相连。

83年公司成立,就是仗着Anders的成名作:Turbo Pascal 1.0。之后的整个DOS时代,开发工具几乎都是Borland的天下:Turbo Pascal,Turbo C,Turbo C++……

Windows 3.x的时代,又是Borland的Borland C++出来拯救了广大的开发人员。再之后便是Delphi。

但是这些都已经是往事了(详情请自行参见李维的《Borland传奇》一书)。

问题在于现在如何了呢?

自从.net出来以后,Borland就乱了阵脚。首先是Kylix表现平平,加之Borland打算加入Linux阵营领导集团的企图也告失败,只好退出 Linux平台下的开发工具领域。然后是MS放出风声说要把Win32全部转到.net下,Borland又匆匆忙忙推出for .net的C#Builder和Delphi 8,结果又是大败。想要搞一个平台无关的C++BuilderX,同样还是惨遭失败。

当C++BuilderX出来时,我写过一篇《C++ BuilderX的问题与展望》,后来在Delphi 2005出来前,我又写了一篇《传说中的DELPHI9--DiamondBack》。但是现在还有什么好写的呢?

这个DeXter看上去还好:仍然是那个叫Galileo的IDE,也许它会是BDS4,还是在.net平台下跑,比Delphi 2005增加了对原生C++的支持,基本上相当于把C++Builder 6集成到Delphi 2005里。仅此而已。

当然,要说增强的方面也不是没有,至少Delphi 2005中增加的像重构,单元测试,增强的调试功能……这些都是C++ Builder 6所没有的。且不说这些方面在DeXter中能做到什么程度还是一个未知数,更何况在Delphi.net中那些重量级的增强功能像ECOII和 Together却应该是用不上的。最关键的是:

一个做原生C++应用开发的,为什么需要依赖.net?

C+ +BuilderX用的IDE——PrimeTime——依赖JAVA已经让人很不爽了。VS做大而全有它的平台基础,Borland没有自己的平台,在.net下根本不是VS.net的对手。还不如放弃这个Galileo的IDE,把Delphi.net、Together、ECOII以for VS.net的方式提供,集中力量把该做的事做好。至于原生应用,就继续按照原生的路子走,别老想着把原生的东西弄到某个平台上,不论是.net还是 JAVA。

一不小心又对Borland指手划脚了,还是回头做我的ABAP吧。.net还是JAVA跟偶有什么关系呢?

也许到很多年以后,当有人提起Borland时,我大概还是会想起曾经发生过的那些往事吧。

BTW:据蔡蔡回复说DeXter是基于Eclipse的CDE,如果是这样的话,那还不错。不过我很怀疑Borland会真的下定决心抛弃Galileo和PrimeTime这两个IDE,而转向Eclipse。毕竟Borland不是IBM。

不记得曾经多久没有谈论和关心Borland了。每天习惯性的输入“borland.mblogger.cn”的时候,居然也很少联想到这个曾经心目中最了不起的公司。

今天老鼠发了一个Borland新版IDE的Flash演示。虽然现在看到新版的Borland产品,不再像以前那样心潮澎湃欣喜若狂,但还是让我不自觉的想起曾经迷恋Borland,迷恋Borland产品,迷恋Borland传奇的那些日子。

曾经的Borland像一个侠客,面对微软、IBM、Sun这样的大公司,Borland一不趋炎附势,二不低头认输,虽然曾经几起几伏,但还是凭借自己在RAD工具、C++编译器方面的深厚功力顽强生存了下来,并且在软件开发的市场占有了一席之地。

Turbo C 2.0、Turbo Pascal 7.0、Borland C++ 3.1,这些昔日的经典作品,曾经让多少人废寝忘食,从此走上编程之路。

Delphi、JBuilder、C++ Builder,这些重量级的产品,又曾经让多少人如释重负,将枯燥乏味的Windows开发变成轻松的享受。

就连那些失败的产品,也可圈可点。比如Kylix,险些就改变了Linux下应用程序的开发方式;比如C++Builder X,提出的很多概念让人耳目一新。 如果不是那该死的.NET……

微软的.NET宣传突然间铺天盖地,来势汹汹,为我们营造了一个“.NET everywhere”的世界。比起其前辈Java的“write once, run everywhere”有过之而无不及。在如此强大的宣传攻势下,有几个人能够保持清醒的头脑呢?

Borland自然也不例外,他希望自己再次站在.NET的前沿阵地。

于是,C# Builder来了,Delphi.NET 也来了。

但是.NET和Windows API不一样。Windows API是flat function的形式,对于OOP并不十分友好,甚至有些理念(如回调函数)还有相冲突之处,因此,VCL将其封装成OO的形式,是十分有利于快速开发的;而.NET从一诞生起就考虑到了组件化和可视化的问题,因此,使用VCL将其再次封装,不仅没有什么好处,反而让人产生了使用上的不习惯。

再加上如今.NET并没有微软当初宣传的那样流行,Borland的迎合举动,反而让自己陷入了一个尴尬境地。

在. NET宣传如日中天的时候,C++ Builder坚持走本地化开发的路,总算是Borland的一次明智举动,否则,如今的BCB一定会像managed C++那样消失的无影无踪(因为Borland不可能敢像微软那样大刀阔斧的改动C++本身)。但是,那个如同测试版一样的BCBX实在是伤了大家的心, BCB也因此险些从Borland的开发计划中消失。真是可悲可叹。其实当初BCBX的概念提出的时候我是非常看好它的,因为它的许多概念(比如多GUI框架支持,多编译器、多平台支持,C++代码重构)都是很先进的。可惜那个最终实现……

现在,Borland新的产品又出现了。很久没有关注Borland的我,没有了以前的那份激动。我的感觉是,产品成熟了,但是没有了那份锐气。

Borland的网站也改版了,遵循了XHTML标准,板块区分也清晰了。但是,以前长长一串的products名单,现在变成了寥寥3项:Application LifeCycle、IDE、Application Middleware。

Borland已经变了。不再是以前那个意气风发的江湖侠客,而是一个脑大肠肥的地方富贾;他拥有的,不再是那些充满灵气的开发工具,而是那些沾满铜钱味的企业解决方案。 Borland,不再是我以前认识的那个Borland了。

看着现在的borland.com首页,我突然想起了《白马啸西风》中的一句话:

那都是很好很好的,可是我偏不喜欢。

就让从前的那个Borland,伴随着他的经典作品,一起封存在我的记忆中吧。

C++BuilderDelphi、JBuilder、VCL、ECO等Borland技术的学习经验 C++BuilderDelphi、JBuilder、VCL、ECO等Borland技术的学习经验 1、CodeGear宣布最新的C++Builder版本 : C++Builder 20072、CodeGear大中华区CTO李维... 阅读详情

相关推荐

Borland Ander,学习中目标

声明:这篇文章是我在网上无意中发现的,个人随笔,它要表达的意思,和我要表达的意思一样。我就不多写了,前Borland Ander确实个高手,而且不是一般的高手,我一直以它为目标,我们要向它学习哦。我说的向它的技术学习,有关很多人说他是个叛徒,确实有点,不管如何,他是个人才,当年的Borland面临危机,群雄都要找适合自己生存的地方。 不记得曾经多久没有谈论和关心Borland了。每天...

weixin_30908649的博客 96

顺序表(Sequential List)详解:从数组到 C 语言实现

顺序表是用连续存储单元依次存储数据元素的线性结构,数组则是其最常见的实现方式,两者本质相同、仅视角不同——数组关注物理存储,顺序表关注逻辑关系。顺序表支持随机访问 $O(1)$,但插入删除需移动元素,效率为 $O(n)$。本文用 C 语言静态数组完整实现了顺序表的初始化、增删改查操作,帮助初学者在不涉及指针的前提下理解其核心原理,为后续学习动态顺序表打下基础。

Guangyu536的博客 285

C++——C++基础】

本文系统介绍了C++中的命名空间、输入输出、缺省参数、函数重载与引用机制。命名空间有效避免标识符冲突,通过namespace和::实现作用域隔离;C++输入输出流(cin/cout)基于std命名空间,支持自动类型识别;缺省参数需从右向左连续定义,且声明中指定默认值;函数重载通过形参差异实现多态;引用作为变量别名,无额外内存开销,广泛用于传参与返回值,提升效率,但不可改变指向,且不能返回局部变量引用。

SHARK_pssm的博客 166

Qwen3-ForcedAligner-0.6B 私有化部署实战:从模型离线、Docker封装到会议原声精准回听

text=text,模型离线下载版本固定SHA256目录规划环境隔离Docker封装GPU绑定健康检查长音频切片全局时间恢复临时文件清理日志脱敏离线验证模型升级快速回滚这些内容看起来和“模型算法”关系不大,却决定了一个 AI 模块究竟只能停留在 Demo,还是能长期运行在真实系统里。已经知道说了什么↓准确找到它什么时候说逐字稿点击回听搜索定位纪要复核会议资料追溯从产品界面上看,它可能只是用户点击一句话以后,播放器准确跳到了对应位置。

shxjnpl的博客 172

C++】 定时器进阶:多层时间轮原理与任务迁移

单层时间轮虽然能够以较低的开销管理大量定时任务,但当任务延迟时间跨度很大时,要么需要大量槽位,要么需要额外维护轮数。多层时间轮通过将不同时间范围的任务放到不同层级中,实现类似“秒针、分针、时针”的分级管理。本文主要介绍多层时间轮为什么出现、各层如何划分、定时任务如何选择层级,以及高层任务如何逐步迁移到低层并最终执行。

qq_64148519的博客 114

附录 C:AOSP 不在公共框架 API 中采用 Kotlin 的原因

以及源码。契约生命周期约束设备发布后会锁定某个 SDK 版本长达接近十年。每一条签名,必须兼容未来所有 kotlinc 版本、Kotlin 元数据格式变更、标准库改动。内部 Kotlin 不受该限制:编译器签名变化可以通过下一次全量重编译抹平。二进制 ABI 映射差异Java 源码声明与 JVM 签名一一对应。Kotlin 一条源码会产出一组 JVM 产物:重载方法、名字混淆、伴生对象访问器、合成辅助函数、Continuation 参数、元数据块;组合结果完全依赖编译器。

dengfuma的专栏 716

​​​​​​​第 4 节 如何用 C++ 设计一个 AI 推理 SDK 的核心接口

AI推理SDK核心接口应遵循“环境→模型→执行器→张量”四层抽象,采用不透明指针保证ABI稳定,以C API为底座、C++ API为封装,统一错误处理,并权衡张量、内存、异步、线程安全与插件扩展。参考ONNXRuntime、TensorRT、OpenVINO设计,实现易用、高性能、可扩展的工业级接口。

Question_123456的博客 514

DeepSeek Harness 系列(02):万物皆插件——Cordis 核心设计深度解读

dsh 的所有能力都建立在 Cordis 插件框架之上。这篇文章结合真实源码,深度解读 Cordis 五个核心机制:Plugin、Context、Service、Event、Effect——每个机制讲清楚「是什么、怎么用、为什么这么设计」。读完之后,dsh 的一切都会豁然开朗。

Cheson的专栏 521

Logger的组装(c++20)

本篇文章到这里就结束了!!!!希望可以帮助大家理解~~~~

2503_93247646的博客 73

实现pytorch resnet18功能(二,c++ cudnn)

/输出32*32*32-----------------------显然输入也是32*32*32。, _ci(ci), _co(co), _h(h), _w(w), _jjh(juanjihe), _pad(pading) {//int stride=2,juanjihe=1时,pading=0;原因是残差块中最后一步只实现了相加,并没有实现relu,所以这个架构中,所有残差块类都跟有relu!

ganggangwawa的博客 195

Tera Term 鸿蒙 PC 适配全记录:用 ArkUI 与 Native C++ 重建多协议终端工作流

开源鸿蒙PC社区推出Tera Term终端模拟器适配版本,基于ArkTS/ArkUI与C++ Native分层架构,实现TCP、Telnet、SSH及串口通信功能。项目在HarmonyOS PC真机上成功验证五类核心场景:应用启动、网络连接、双向输入输出、多会话独立管理与终端渲染。通过Node-API桥接前后端,保留原生终端语义,不依赖Win32兼容层,为嵌入式与运维用户提供稳定高效的跨平台终端体验。

稻草人 7516

C++速通2

int a = 3;int b = 4;// 声明名字空间int main()int a = 1;// 1// ::表示全局作用域 2// 3// 4return 0;```一个函数使用virtual关键字修饰,就是虚函数,虚函数是函数覆盖的前提。在QtCreator中使用斜体字。```cpppublic:// 虚函数cout << "动物爱吃饭" << endl;

qq_63858767的博客 441

CCFCSP算法专栏:关于二分

left = mid + 1 # mid 可能是答案,但先往右探else:return left - 1 # 注意减 1为什么 return left - 1?因为这里的left是“第一个 > target 的位置”,所以最后一个 <= target 的位置是left - 1。场景区间循环条件更新方式返回值精确查找[l, r]l <= rl=mid+1r=mid-1循环内 return mid,否则 -1左边界(第一个 >= target)[l, r)l < rl=mid+1。

Chester_1999的博客 168

ARM64 Linux 6.10 内核驱动(14):drivers/base/platform.c:板级设备主战场

本文详解 drivers/base/platform.c 在 QEMU virt + ARM64 平台下如何实现平台设备驱动模型。核心是将无自动注册能力的 MMIO 设备通过 platform_bus_init 建立伪总线,设备通过 platform_device_add 挂载至该总线,驱动则通过 __platform_driver_register 注册并绑定。匹配机制优先依赖 DT 的 compatible(of_match_table),其次为旧式 id_table 和名称匹配。platform_pr

T1mzhou的博客 169

C++ std::queue<float> 完整教程

std::queue是front()back()push()pop()

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 79

C++第一课

你暂时不用背它。

qq_56657939的博客 139

【408数据结构 03】线性表与顺序表:C++手写SeqList

顺序表用一段地址连续的存储单元依次存放线性表元素。假设每个元素占个字节,第一个元素地址为LOC(a1),则第i这就是 408 常考的随机访问公式。下标从 0 还是 1 开始408 题目中位置i通常从 1 开始,代码里数组下标从 0 开始,注意转换。插入位置范围是容易漏掉length + 1,也就是表尾插入。删除位置范围是删除不能到length + 1。插入从后往前移动,删除从前往后移动方向搞反会覆盖数据。平均移动次数公式要记牢插入n/2,删除(n-1)/2。顺序表长度和容量不是一回事。

xiangyun61的博客 246

MAIN.c(1): warning C318: can’t open file ‘STC8G.H’ 报错 解决 分析

编译STC8G1K08-38I-TSSOP20时出现warning C318: can't open file 'STC8G.H',因Keil找不到头文件。解决方法:以管理员身份运行STC-ISP,进入【Keil仿真设置】,点击“添加STC单片机到Keil中”,选择Keil安装目录(如D:\software\KEILC51),系统将自动复制STC8G.H至C51\INC\STC。随后在Keil中配置Include Paths为C:\Keil_v5\C51\INC\STC,即可成功包含头文件并消除警告。校验路

dlj1656955044的博客 134
上一篇: [转载] wxWidgets-2.6.2 + Microsoft Visual C++ 2005 Express + Platform SDK 安装使用手记
下一篇: AJAX 弄潮Web 2.0 在线Office项目复活
空空法师
博客等级 码龄21年 18粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值