瞧不上 C++ 和 D 语言,国外程序员将 5.8 万行代码迁移到 Jai 语言,到底图什么?

VSCode差异编辑器JAI语言支持插件:原理、部署与实战 在软件开发中,代码差异对比是版本控制、代码审查和问题排查的核心环节,其原理在于通过并排或内联视图高亮显示文件版本间的增删改。为实现精准对比,现代集成开发环境(IDE)如Visual Studio Code(VSCode)依赖语言配置来解析语法结构,确保代码折叠、括号匹配和高亮等功能在差异视图中正常工作。对于JAI这类新兴高性能系统编程语言,其工具链生态仍在完善,VSCode内置差异视图常因缺乏针对性语言配置而失效,直接影响开发效率。为此,社区开发的`jai-vscode-diff-editor-suppor 阅读详情

作者 | Simon van Bernem

译者 | 核子可乐

策划 | 冬梅

本文中,我将向大家分享自己把游戏开发成果移植到 jai 语言的经历。我的游戏之前主要是用 D 和部分 C_++ 编写的,总代码有 58620 行(不包括库)。其实这事我已经筹划了很久,还专门记录下了最初的期望、移植过程和最终结果。下面,就请大家随我一道回顾这段历程。

为什么要移植

很多朋友可能好奇,为什么会有人要大费周章把这么些代码移植成另外一种语言?把项目做完,之后再用新语言不好吗?我当然有自己的考虑,主要基于以下几点:

  • 现状让我的日常工作非常痛苦

  • 我有称手的系统移植工具,所以移植过程应该会比较顺利

  • 对我来说,Jai 似乎比 C++ 或者 D 更有吸引力

    为什么不用 C++

网上关于 C++ 缺点的讨论已经很多,所以这里不再赘述。简而言之,C++ 几十年发展下来积累了太多错误决策,而且永远都摆脱不掉了。它的标准库堪称灾难,代码几乎不可能在交给他人后顺利运行。而且不知道为什么,C++ 每次新增功能都有坑。所以 C++ 的使用感受确实很差,时时刻刻在折磨着我,而且这个项目的发展方向在我看来也有问题。总之,我想尽快离开 C++ 生态系统。

为什么不用 D

我的游戏开发之旅始于 2019 年,当时我已经感受到 C++ 的问题了,但并不知道哪种语言更好。于是我选择了 D,理由如下:它很像 C++,只是去掉了不好的部分。但很遗憾,这只是我的一厢情愿,D 在很多方面都跟 C++ 一个德行。

必须承认,D 跟 C++ 比确实有一些优势,比如更强大的元编程、无需标头、没有未初始化的值等。但很遗憾,这些优点根本就抵消不掉现实缺陷。

我在 Windows 上的两种 D 编译器(dmd 和 ldc2)之间反复横跳了四年,最后发现至少在 Windows 平台上,D 语言的状态也就是个业余项目、往好听了说也是极不成熟的水平。很难相信这是种已经发展了 20 多年的语言。截至目前,我不建议任何人在 Windows 上用 D 开发严肃项目,甚至还不如继续用 C++。从我亲身经历的问题来看,目前最大的麻烦是 Windows 上的调试信息完全 损坏:

  • 在 90% 的情况下,this 指针会缺失或出错

  • 函数堆栈上的变更经常部分 / 完全丢失或出错

  • 有时会报告变量值错误,但却没有任何其他可见的问题

  • 静态 foreach 扩展处理不当,令调试工具无所适从

  • minxins(相当于 D 中的宏)生成的调试信息会令调试工具找不到正确文件(只能按步进行反汇编)

  • 在 Visual Studio 中将指令指针移回上一行,经常导致程序在执行下一条指令时崩溃在 D Language Code Clulb 讨论版上,我看到“DMD 以往曾经出过很多关于调试信息的问题”,但号称正在处理中。可很遗憾,ldc2 也根本没好到哪去。而且除了调试之外,元编程这边也有不少缺点和问题:

  • 不同的编译器阶段会诡异地相互影响,导致元编程出现意外,引发误导性错误

  • ldc2 的编译速度非常慢,但我别无选择,因为 dmd 有 bug

  • D 提供所谓 betterC 模式,其中禁用垃圾收集;但在使用此模式时,标准库不编译而且元编程也会受到严重阻碍

  • 说明文档缺失

  • 还有其他几十个更具体的问题

总而言之:虽然 D 在某些方面确实比 C++ 强点儿,但其他地方的问题反而更多,导致使用体验痛苦万分。其中最大的问题就是糟糕的调试信息和极具破坏力的垃圾收集机制。我承认,我只是想把 D 当成改进版的 C++ 来用,而 D 的开发者并不认同这种理解。所以 D 不适合我,而且我现在根本就不敢信任它的调试器。

为什么选择 Jai

种种遭遇,把我引向了 Jai。这是 Jonathan Blow 从 2014 年开始开发的一种语言,而且直到 2019 年 12 月才向编译器敞开大门。目前封闭测试仍在进行中,我也是约两个月前受邀体验的一员。Jai 的诞生源自 Blow 对 C++ 的失望。而且跟 D 不同,Jai 确实朝着我所认可的、能够对 C++ 做出有意义改进的方向前进。在我看来,Jai 的最大优势有二:更快的编译速度,还有以不受限制的编译时执行进行元编程。

值得注意的是,这里讨论的可不是编译速度提高 20%、或者元编程功能选项略有增加之类不痛不痒的小改进。Jai 的编译速度提高了 10 到 100 倍,而且能在编译期间执行任何操作。特别是与编译时编译器 API 相结合的元编程,已经带来了具有深远意义的影响:例如消除对构建系统的需求,也摆脱了对复杂的非启发式自定义检查的依赖。除此之外,Jai 还对 C++ 做出了其他改进,例如更好的默认值、更简单的语法、更实用的标准库、命名函数参数、上下文、using 等。这就让我有了信心,打算通过从 D 移植到 Jai 让自己的游戏获得以下收益:

  • 将编译时间从现在的 60 秒左右降低到 5 秒以内,最好能达到 1 秒上下

  • 调试器终于能用了 

  • 用 Jai 代码替代了 build-script

  • 用元编程引入自定义编译检查,借此捕捉更多错误

  • 用更简单的命令式代码替代复杂的元编程代码

  • 提供一系列语法改进,减少了代码中的噪声

  • 删除了以往使用多种语言时无法避免的重复部分##

    为什么不考虑其他语言

的确,我明确不想用的只有 D 和 C++,而略感兴趣的是 Jai……那为什么不试试别的语言呢?

最无法回避的选项应该就是 Rust 了。它风头正劲、社区活跃,但我还是感觉 Rust 在设计权衡方面有点问题。支持 Rust 的开发者们似乎有种“内存安全是第一要务”的集体心态。没错,很多问题都源自内存安全问题,所以我大体能够理解这样的判断。但也有很多对于安全和质量要求没那么极端的软件需求。比如,我相信如果 C 和 C++(基本就是公认的「最不安全」语言)能够去掉零终止字符串、默认初始化值和适当的指针 + 长度类型,那就足以用边界检查取代 90% 的指针算法、解决临时内存管理的需求了。另外,我觉得很多人在追求“安全”代码时,其实是忽略掉了软件漏洞层出不穷的根本原因:文化上对于复杂性的容忍,甚至是鼓励 14。总之,我不愿意忍受 Rust 那漫长的编译时间,也不太认同它的文化定位。跟 Rust 不同,jai 就很关注如何控制复杂度,这一点更符合我自己的文化判断。

还有其他一些人气稍逊的选项,例如 Zig。我只能说它们可能也有巨大的潜力,但我不太相信这些会是正确的选择。不是好或者不好,只是没那么强的吸引力。

如何移植

刚开始,我还在心里给自己鼓劲、祈祷移植过程能顺利完成。之所以比较乐观,是因为我在游戏中设置了两套有助于移植的系统:

  • 游戏会将游戏会话的输入(HID、加载文件、网络等)记录到文件内并稍后重播。在重播时,记录的输入输出确定性能让游戏循环达到完全相同的状态,精确无误。

  • 游戏在执行过程中的各个点位上,都会对游戏状态进行哈希处理,并将相应的哈希值保存在不同文件当中。这样在重播时,文件内容即可用于检查重播是否跟原始执行完全匹配。

这两项功能间有一些细微差别,但对整体运行影响不大。依托这些功能,我的移植计划如下:

  • 将一小段代码由 D 或 C++ 复制到 jai,而后编译。

  • 调用新的 jai 代码,替代旧有 D 或 C++ 代码。

  • 重播录制的游戏会话。

  • 如果重播发生分歧,则说明移植引入了 bug,修复此 bug。

  • 如果重播无分歧,则移植成功,继续下一步。

这种方法的关键在于:

  • 是不是所有引入的 bug 都会导致游戏状态发生显著分歧?

  • 代码能否以较小的增量进行移植,以便易于知晓 bug 存在、找到 bug?

第一个问题,取决于状态哈希覆盖到多少代码。有些代码需要知晓游戏是否正在重播,这些部分的内部行为会有所不同,因此无法得到有意义的哈希值。例如,写入文件功能会在重播时丢弃一切数据,因此如果移植后的写入文件中出现了 bug,就会被哈希过程注意到。幸运的是,大部分代码并不属于这一类。最初的哈希在代码库中极少被用到,但最近我开始将其扩展到插入动态数组的过程,例如记录动态数组的大小和容量。

如此一来,当有 bug 导致动态数组的插件会改变游戏逻辑时,问题就会被及时注意到。因为我代码中的几乎所有功能都是靠动态数组实现的,所以即使是在任何庞大而复杂的数学算法当中,每一点微波的行为变化都能引起注意。

第二个问题则属于经典编程问题:你的代码解耦程度到底有多高?这一点非常有趣,因为我得把代码库里的所有偶发复杂性元素找出来。首先就是模板函数:它们无法直接移植,因为函数定义和调用站点必须在同一编译器之内,才能让模板正常起效——除非对模板进行手动实例化。我的代码库里有不少模板化代码,但它们跟容器和序列化没什么紧密关联,所以我觉得这应该不会惹出太大的麻烦。

继续推进

下面来点更直观的统计数据和图片吧。先来看我这代码库的当前状态:

总体来说,这里有 45701 行 D 代码和 12919 行 C++ 代码,总共 58620 行。编译时间如下:

在调试模式下,ldc2 的编译过程大概需要 3 分钟,最高占用 8 GB 内存。这时候如果打开浏览器,那我这台 16 GB 内存的笔记本电脑就会进入满负荷运行。发布模式内存占用量更大,为 11.5 GB。

如果一切顺利进行,那在两张图中,一切现有色块都应该会被新色块取代。能成功吗……

最后,我想用数字来解释移植的收益,特别是我当初的预期错得有多离谱:

  • 我预计整个过程需要 160 个小时(每周 40 小时,共耗时一个月)。但我这个估计差得太多了,很可能根本用不上一个月的时间。

  • 我希望编译时间能从 1 分钟左右下降到最多 5 秒,能到 1 秒上下最好。至于移植后的最终结果如何,我将持续保持更新。

 

jai.vim:Jai编程语言的Vim语法突出显示。 我计划在发布语言时维护和更新此软件包 杰维 编程语言Jai的语法突出显示 安装 如果您使用病原体,则将此插件克隆到~/.vim/bundle git clone https://github.com/jansedivy/jai.vim.git ~ /.vim/bundle 通常,对于其他插件管理器,您必须在~/.vimrc添加配置行。 " vim-plug Plug ' jansedivy/jai.vim ' " NeoBundle NeoBundle ' jansedivy/jai.vim ' " Vundle Plugin ' jansedivy/jai.vim ' 手动安装 将文件复制到~/.vim文件夹 立即下载

相关推荐

Jai

Jai

【亲测免费】 探索JaiPrimer:一个强大的Jai语言学习与实践平台

探索JaiPrimer:一个强大的Jai语言学习与实践平台 是一个专为开发者打造的开源项目,旨在帮助大家轻松学习和应用Jai这门高性能、低延迟的编程语言。本文将深入探讨该项目的技术细节、应用场景以及独特优势,让你更全面地了解并开始使用它。 1. 项目简介 JaiPrimer是一个综合性的学习资源库,提供了丰富的教程、示例代码和工具,使初学者能够快速上手Jai。该项目不仅仅是一个文档集合,更是实践与...

gitblog_00091的博客 917

jai网页API文档

jai网页API文档,良心文档,爱研究的同学值得拥有.....................

Jai编程语言学习指南

Jai编程语言学习指南 1. 项目介绍 The_Way_to_Jai 是一个逐步引导你发现和学习Jai编程语言的项目。Jai是一种新兴的编程语言,旨在提供高效、灵活和现代的编程体验。该项目由Ivo-Balbaert创建,旨在通过详细的教程和丰富的示例代码,帮助开发者快速掌握Jai编程语言。 2. 项目快速启动 2.1 环境设置 首先,确保你已经安装了Jai编译器。你可以从Jai的官方网站下载最新版...

gitblog_00086的博客 719

基于Python的携程景点评价爬虫与情感评分分析

摘要: 本项目通过Python技术栈实现携程景点评论的情感分析系统,包含数据爬取、文本预处理、情感评分和可视化分析全流程。使用requests抓取评论接口,jieba进行中文分词,SnowNLP计算情感得分(0-1),并通过词云、情感分布图呈现结果。典型分析显示72%评论为正面,负面反馈多涉及"排队久""票价贵"等问题。系统可辅助景点口碑管理,扩展方向包括多景点对比、BERT模型优化等。项目强调需遵守爬虫伦理,控制请求频率,适用于非商业用途的旅游数据分析。(150字)

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 977

Ansys Zemax|无焦系统设计中的角度单位优化技巧

本文详细介绍了在Ansys Zemax OpticStudio中进行无焦系统设计的核心技巧。重点阐述了从聚焦思维到角度思维的转换,并演示了如何通过开启‘无焦像空间’模式、构建以波前和光束尺寸为目标的评价函数来优化激光扩束镜等系统。文章还分享了使用IMSF操作数处理混合系统以及常见误区避坑的实用指南,旨在帮助光学设计者高效完成无焦系统的设计与分析。

weixin_29231027的博客 360

Jai语言指南之路

Jai语言指南之路 1. 项目介绍 《Jai语言指南之路》 是一个渐进式的教程,旨在帮助开发者轻松学习并掌握Jai编程语言。该项目由Ivo Balbaert发起,基于个人对Jai视频资料及其他社区资源的整理。随着Jai编译器的更新,教程中的近300个完整且运行良好的示例程序也会随之测试调整,确保内容的新鲜度和技术的准确性。本教程覆盖了从基础概念到高级特性的广泛主题,包括但不限于内存管理、类型系统、...

gitblog_00054的博客 1305

雷达信号处理中的CLEAN算法实现与优化

在信号处理领域,杂波抑制是提升目标检测性能的关键技术。CLEAN算法作为一种迭代去卷积方法,通过逐步提取最强信号分量并消除其影响,有效解决了传统方法在复杂环境下的局限性。该算法结合自适应阈值和噪声基底估计,显著提高了雷达信号处理的精度和鲁棒性。在工程实践中,CLEAN算法广泛应用于气象雷达、地物杂波抑制等场景,通过Matlab仿真可以快速验证算法性能并优化参数设置。本文重点探讨了CLEAN算法在雷达信号处理中的实现细节和优化技巧,包括距离徙动补偿、多普勒补偿等关键技术。

weixin_32430941的博客 264

继 Linux 之父之后,独立开发者 Jonathan Blow 再次炮轰 C++ 是可怕的语言

Jonathan Blow 是著名独立解密游戏《Braid》和《The Witness》的作者,近日,他表示C++ 真的是一种可怕的语言,可怕到他要停下手中的工作发明一...

优快云资讯 1万+

【大模型+知识图谱】哈工大版chinese-roberta-wwm-ext模型介绍、下载部署和GPU显卡配置

RoBERTa模型的一个重要改进版本,由阿里云的研究团队提出。而Chinese RoBERTa-wwm-ext则是针对中文文本的预训练模型,它在哈工大的研究团队手中进一步优化,特别适用于中文自然语言处理任务。

知识靠谱的博客 2773

18、Excel VBA编程:自定义函数创建与代码调试全攻略

本文详细介绍了Excel VBA中自定义函数的创建方法,以获取单元格注释为例演示了完整开发流程,并深入讲解了代码调试的重要性与核心工具。内容涵盖三种主要错误类型及其应对策略,系统介绍了调试工具栏、断点、逐行执行、Locals窗口、Immediate窗口等实用功能。通过综合案例展示了如何运用调试技术解决实际问题,并总结了提前规划、逐步测试、日志记录等最佳实践,帮助读者提升VBA编程效率与代码质量。

life6的博客 100

互联网摸鱼日报(2022-12-03)

飞桨开源框架2.4版本全新发布,带来哪些新功能?36氪 WISE2022 新经济之王大会成功举办:聚焦创新,助力实体产业升级如何加速AI业务落地,这4场直播带你解锁百度百舸的不同面!瞧不上 C++ 和 D 语言,国外程序员将 5.8 万行代码迁移到 Jai 语言,到底图什么?解决开发者数十年的“噩梦”: Zero ETL、Zero 脏数据,亚马逊云科技推出云原生数据战略让猴子学会用意念打字后,马斯克称半年内展开脑机接口人体试验,他还计划自己植入1个N1 芯片对话式AI系列:领域知识中台建设方法论与实践一旦越

weixin_43849685的博客 1982

扣子Coze触发器使用指南:实现工作流定时执行的完整教程

Coze平台触发器功能详解:定时触发器配置指南 摘要:Coze平台的触发器是实现自动化任务的核心组件,其中定时触发器能够按预设时间自动执行工作流。本指南介绍了定时触发器的配置方法,包括每日、每周、每月及Cron表达式等多种时间设置方式,以及如何关联工作流执行具体任务。文章还提供了健身提醒等实用案例,并涵盖了触发器调试、发布及常见问题解决方案。通过合理配置定时触发器,用户可以轻松实现各类自动化任务,如定时发送消息、数据采集等,大幅提升工作效率。

互联网架构师笔记 1923

Jai 编程语言学习指南

Jai 编程语言学习指南 1. 项目的目录结构及介绍 The_Way_to_Jai/ ├── LICENSE ├── README.md ├── Table_of_contents.odt ├── Table_of_contents.pdf ├── Table_of_contents.txt ├── examples/ │ ├── example1.jai │ ├── example2.j...

gitblog_00993的博客 830

cesium加载geotiff的 四种方法

本文介绍了在Cesium中加载GeoTIFF数据的两种主要方法。首先解析了核心前置知识,包括坐标系匹配、数据类型区分和性能优化。方法1详细演示了如何将RGB影像GeoTIFF转换为Cesium影像图层,包含从数据解析到Canvas转换的完整代码流程。方法2则针对高程数据(DEM)处理,展示了前端直接解析构建地形网格的方案。文章提供了完整的代码示例和关键实现要点,适用于卫星影像、专题图和数字高程模型等多种GeoTIFF数据类型在三维场景中的可视化需求。

大剑师兰特的GIS世界 395

代谢组数据分析(零):从质谱样本制备到MaxQuant搜库(蛋白质组和代谢组)

本文详细介绍了代谢组数据分析的过程,从LC-MS/MS技术的样本制备、分离、质谱鉴定到MaxQuant软件的使用。LC-MS/MS包括样本制备、液相色谱分离、质谱上机和鉴定等步骤。MaxQuant在蛋白质定性和定量中扮演关键角色,通过搜库和数据处理提供精准结果。此外,文章还涉及了数据采集模式、质谱图谱解析、数据库和软件选择以及结果评估等方面

专注生信领域 8588

Jails语言服务器对匿名结构体成员的支持解析

Jails语言服务器对匿名结构体成员的支持解析 Jails作为Jai语言的Language Server,近期修复了一个关于匿名结构体成员访问的重要功能缺陷。本文将深入分析该问题的技术背景、解决方案以及对开发者的实际影响。 匿名结构体在Jai中的使用 Jai语言支持两种结构体定义方式:命名结构体和匿名结构体。命名结构体通过:: struct语法定义并赋予类型名称,而匿名结构体直接在变量声明时定义结...

gitblog_07859的博客 387

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

简述D语言对C++的改良

说是改良,不过C++的死忠份子可能认为是对C++的亵渎,随便怎么说,就说是不一样的地方吧。 最近D语言没什么大动作,我又参与到xruby的builtin开发中,圈子里有点冷清。有留言说这里没什么人关注,的确是这样,抽点时间来写个简单的比较。 这里有一份各种语言的比较,大致可以了解D语言要对C++改些什么。 http://digitalmars.com/d/comparison.htm...

头脑歪歪 665

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Focus编辑器与Jai语言:如何用现代编程语言构建高性能应用

Focus编辑器是一款简单快速的文本编辑器,它采用现代编程语言Jai开发,展现了如何利用Jai的特性构建高性能应用。本文将深入探讨Focus编辑器与Jai语言的结合,以及这种组合如何为用户带来高效的编辑体验。 ## 认识Focus编辑器:一款简单而快速的文本编辑器 Focus编辑器以其简洁的设计和出色的性能脱颖而出。它提供了丰富的功能,满足开发者的日常编辑需求。 [![Focus编辑器标志]

gitblog_00092的博客 884

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Jai编程语言学习指南:The_Way_to_Jai项目推荐

Jai编程语言学习指南:The_Way_to_Jai项目推荐 The_Way_to_Jai项目是一个致力于帮助开发者学习和掌握Jai编程语言的开源项目。该项目由Ivo Balbaert创建和维护,主要使用Markdown进行编写。 1. 项目基础介绍和主要编程语言 本项目旨在为对Jai编程语言感兴趣的初学者和进阶开发者提供一个全面的学习资源。项目包含了大量的示例代码和详细的说明文档,帮助开发者从基...

gitblog_00304的博客 445

VSCode JAI差异编辑器语法高亮失效的解决方案

在软件开发中,语法高亮是提升代码可读性和开发效率的基础功能,它通过词法分析将代码元素以不同颜色区分。其原理依赖于编辑器对语言模式的识别和对应的语法规则文件。对于VSCode这类现代编辑器,差异视图(Diff Editor)的语法高亮机制尤为关键,它直接影响代码审查和版本对比的体验。然而,当特定语言(如JAI)在差异编辑器中无法正确触发语法高亮时,代码会显示为纯文本,严重阻碍开发工作流。本文聚焦于解决VSCode中JAI文件差异对比时语法高亮失效的问题,通过分析VSCode扩展的激活机制和语言选择逻辑,提供了

weixin_27653327的博客 326

Jails:项目的核心功能/场景

Jails:项目的核心功能/场景 Jails 是一款面向 Jai 编程语言的实验性语言服务器。 项目介绍 Jails 旨在为 Jai 语言提供高效、便捷的开发支持。它作为语言服务器,可以集成到各种代码编辑器和IDE中,为开发者提供代码自动补全、定义跳转、函数签名帮助以及编译错误报告等功能。这些特性能够大大提高 Jai 语言的开发效率,使得编码过程更加流畅。 项目技术分析 Jails 的实现基于多个...

gitblog_00435的博客 548

C# 与 C 、 C++ 、 D 、 Java 的性能比较(三)

C# 与 C 、 C++ 、 D 、 Java 的性能比较(三) (文章转自http://mag.vchelp.net)jason f2i 抛开Intel不谈,可以看出C#在浮点到整型的转换中效率远远高于其余四个,仅是C,C++, 和D开销的2/3,是Java的2/5。在我让它们使用相同的随机数发生器前,不同语言的性能差异极大,这说明转换速度非常依赖具体的浮点数值,当然这是后见之明了。为了确保每个

许劲松的专栏 4908

被误解的C++——C++的缺陷和D的缺陷

C++的缺陷和D的缺陷D语言,从字面上讲应当是在C/C++的基础上进了一位,其特性当然也进了一位。真是这样?也是,也不是。这得看你的出发点和价值观了。D的定位在于继承C/C++的优势,但却更加易学易用。这种定位招人喜爱。C/C++的致命伤就在难学难用上。(不少人认为C++难学易用,我也持这种观点。但是既然要拿来同D比较,那我也只能跳一回票。只此一次,下不为例)。我大致了解了一下D的特性

longshanks的专栏 6043

【亲测免费】 探索Jai编程语言的轻量级指南:The Way to Jai

探索Jai编程语言的轻量级指南:The Way to Jai 项目介绍 "The Way to Jai" 是一个专注于帮助开发者快速掌握Jai编程语言的开源项目。Jai是一种新兴的编程语言,以其高效、简洁和强大的功能吸引了众多开发者的关注。本项目不仅提供了详尽的Jai语言基础知识,还通过超过300个完整的Jai示例代码,帮助开发者从零开始逐步深入理解Jai的各个方面。 项目技术...

gitblog_00482的博客 769

d澄清垃集

d澄清垃集

个人进步之路 359
上一篇: 考研生对导师“嚣张发言”引热议:希望您今年招个女同学,不然我换导师
下一篇: 丹麦最神奇门将:踢球时思考数学,37岁拿诺奖,与爱因斯坦吵吵一辈子,开创了量子力学
职言职语
博客等级 码龄6年 6732粉丝 11原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值