D语言之路-第1篇 库函数之争

D语言教程大全 什么是D语言 : C++复杂度的30% × C++功能的70% × Ruby开发效率的90% = DD语言介绍 关联数组 嵌套函数,函数文字量,动态闭包 自动化垃圾收集 内联汇编 契约式编程 单元测试 线程同步 与C的ABI兼容 更多的D语言介绍 http://bbs.d-programming-language-china.org/ 阅读详情

         D语言有着两个不同的库,分别为Phobos[i]和Tango[ii]。这对于像我这样的初学者来说面临着一个选择,你是愿意和跳探戈呢(tango with D,事实上Tango的标准教材之一是《learn to tango with D》[iii],中译版《学习D语言的tango》[iv]),还是作为一颗忠实的卫星(Phobos即火卫一)。对于Java这种具有统一的标准库和运行平台的语言来说,这不成问题,但是D语言这个新锐语言在其发展的当前阶段,出现两个运行时语言库相与争锋、各有千秋的现象。

         我们先来看看上场的两位选手都有什么优势。

         Phobos优势:

1.      Phobos官方认证的标准运行时库。Phobos最初由D语言之父WalterBright开发。事实证明,在任何情况下,有一个给力的老爸都不吃亏。Phobos由此顺利地被戳上了D语言官方认证库的招牌。

2.      Phobos紧跟D语言规范的步伐,尤其是在D语言版本2推出之后,更是在对新特性的支持上把Tango牢牢甩在了脑后。作为一门发展速度极快的语言的库,轻装上阵的Phobos因其小而精,更因其官方标准库的身份,紧跟D语言的发展脚步,某种扮演着编程实例和测试用例的角色。

         Tango优势

1.      Tango开发更多由社区驱动。Walter Bright作为D语言的设计者和编译器的重要开发者之一,为D语言社区做出的贡献是无以伦比的,可是人家毕竟还带有digitalmars公司的老总的头衔。马云说,公司想挣钱是正常的,不想挣钱是不正常的,商业是门严肃的学问。以WalterBright为首的digitalmars公司会不会考虑到商业利益,利用对D语言和Phobos的控制权,把精力用在开发商用库函数之上,而间接阻碍了D语言的发展状态,适得其反地影响了用户的使用呢?这是一个值得思考的问题。

2.      Tango具有比Phobos强大得多的功能,与Tango相比,Phobos更像是最新D语言编译器的unnittest。如果只使用Phobos,有一些Tango的拥趸们甚至觉得D语言编程的乐趣将难以维系。相比C++或Java来说,D语言的库函数支持仍非常不足,如果用Phobos来比较,那更是一毛之于九牛,也因此很大程度上造成了业界对D语言的观望态度。D语言社区也在致力于解决这个问题。

         比较糟糕的是,Phobos和Tango两者不可得兼。这是因为两者核心系统函数的实现方式存在着的巨大的差异。我们都知道D语言的内存管理严重依赖于垃圾回收器。Phobos和Tango对于它们的实现竟然完全不同,这就导致了在D程序中无法同时使用两者。而且,两者想要完全融合或兼容,在短期之内完全看不到希望。在这种水生火热的情况下,tangobos诞生了。显然,它的爸爸是Tango,它的妈妈是Phobos,与所有不睦家庭的新生儿一样,他扮演着两者之间的粘合剂。它是将Phobos向Tango的移植的成果,有了他,在Phobos上开发的D程序大多能在Tango上运行。如果它是个人,那它更像母亲一点,因为tangobos基本上是Phobos的源码拷贝,除了修改了一些底层部分。

         Phobos和Tango的分立是D语言发展到一定阶段的产物。我大言不惭地揣测,一方面是Walter Bright、Andrei Alexandrescu等人对于D语言和Phobos的控制过于强大;一方面是D语言新兴粉丝们对向D语言库中添加新功能的火热之情难以倾泻。在这种D语言库函数严重匮乏又急需发展的情况下,自然而然地催生了一个精小的官方库和一个粗犷的社区库的两立相争情况的出现。

         然而,对于开发者来说,出现两个不兼容的开发库实在是一件大不幸之事。这种状况在可见的将来将无法彻底解决。理想情况应该是对D语言库进行某种划分。Java平台就按照适用的系统平台的不同,分为J2ME、J2SE、J2EE。按照这个思想,将库划分成最小语言支持库和扩展支持库。最小语言支持库包括垃圾回收器、多线程库、IO库等必不可少的核心底层支持,扩展支持库包含数据库、高级数学函数、图像处理等高级功能。两者各司其职,互为依赖:精英们继续指向天空划出优雅的轨迹,而大众们则跳起欢快的探戈,他们一起庆祝D语言的成长。

本文章欢迎转载,请保留原始博客链接http://blog.youkuaiyun.com/fsdev/article

C语言字符串库函数模拟实现:从strcpy到memmove的底层原理与安全实践 字符串处理是编程中的基础操作,涉及内存管理、指针运算和算法效率等核心概念。在C语言中,标准库提供了一系列字符串函数,其底层原理基于字符数组和指针操作,通过遍历、比较和拷贝等机制实现。理解这些原理不仅能提升代码效率,更是防范缓冲区溢出等安全漏洞的关键。例如,strcpy函数在不检查目标缓冲区大小时可能导致严重的安全风险,而strncpy虽有限制但行为怪异,需手动添加终止符。通过模拟实现strlen、strcmp、strcat等函数,开发者可以深入理解内存模型和指针操作,从而在应用场景中编写更健壮的代码。本文结 阅读详情

相关推荐

单片机开发入门指南:汇编与C语言选择、ARM架构解析与实战进阶

在嵌入式系统开发中,编程语言的选择与硬件架构的理解是核心基础。汇编语言作为贴近硬件的底层工具,能实现极致的执行效率和资源控制,适用于时序要求苛刻的场景。而C语言凭借其高开发效率、强大可移植性及丰富的生态,已成为嵌入式开发的主流通用语。其结构化特性和编译器优化能力,使得复杂项目的构建与维护成为可能。从技术价值看,掌握C语言并结合必要的汇编知识,能有效平衡开发效率与性能需求,尤其适用于物联网设备、工业控制等应用场景。本文聚焦单片机初学者常见困惑,深入探讨汇编与C的抉择、ARM架构解析及ISP、IAP等烧录技术,

weixin_30367873的博客 576

d标准库选讲

d标准库选讲

个人进步之路 674

NXP 56800E电机控制库实战:坐标变换与SVM算法详解

在电机控制领域,坐标变换是实现高性能矢量控制(FOC)的数学基石。其核心原理是通过克拉克变换和帕克变换,将复杂的三相交流电机模型解耦到易于控制的旋转坐标系中,从而实现对转矩和磁场的独立、精确调节。这项技术极大地提升了电机的动态响应和效率,是伺服驱动、变频器和电动汽车电驱系统的核心技术。空间矢量调制(SVM)作为其关键实现技术,通过优化PWM波形合成,提高了直流母线电压利用率并降低了谐波。本文聚焦于NXP 56800E系列DSC的Motor Control Library(MCLIB),深入剖析其坐标变换与S

weixin_30843605的博客 469

d语言文章链接库等大全

atila Etienne Cimon Dmitry Olshansky 编译驱动的链接 nogc 亚当的ddox 测试时,请确保涵盖特例 d的工具 d的神奇标记 d的内存安全 如何创建和使用d包 d函数式花园 结构子类型作为命名参数,太长,现在未翻译 d的异常和错误 从d调用net 大卫南丁 D中解耦及最小化依赖 d中inout 约翰的编程博客,优化 巨大二进制 标准库串解码 dλ肮脏实现 更改png减少使用内存.d 我的cgi.d Stefan Koch的ctfe 采访d作者 abel,高级布尔方程语言

个人进步之路 534

嵌入式C语言标准库实战:文件操作、内存管理与字符处理深度解析

C语言标准库是嵌入式系统开发的基石,它提供了一套标准化的函数接口,用于处理文件I/O、内存管理、字符串操作等核心任务。其设计遵循可移植性和效率原则,通过抽象底层硬件差异,使开发者能够专注于应用逻辑。在嵌入式开发中,标准库的价值尤为突出,它帮助开发者在资源受限的环境下实现稳定可靠的系统功能。应用场景涵盖从传感器数据采集、通信协议解析到实时信号处理等多个领域。本文以Motorola DSP56000平台为例,深入剖析文件操作函数如`fscanf`的安全使用与`freopen`的流重定向机制,并探讨内存管理函数`

350

Windows C++ DLL调用约定详解:从x86到x64的跨平台互操作指南

函数调用约定是应用程序二进制接口(ABI)的核心组成部分,它定义了函数调用过程中参数传递、栈平衡和名字修饰等底层协议。在Windows平台C++开发中,调用约定直接决定了动态链接库(DLL)的二进制兼容性,是确保跨编译器、跨语言互操作的技术基石。从32位时代的__cdecl、__stdcall、__fastcall到64位平台的统一调用约定,不同的约定在参数传递方式、栈管理责任和性能优化上各有侧重。正确理解和应用调用约定,能有效避免栈损坏、内存访问违例等运行时错误,特别是在涉及DLL导出、动态加载(GetP

weixin_33393017的博客 343

C语言string.h库函数深度解析:从原理到嵌入式实战应用

字符串处理是编程的基础,其核心在于对内存中字符序列的高效操作与安全控制。C语言标准库中的string.h提供了一系列底层函数,如strcpy、strcat和memcpy等,它们直接操作内存,性能高效,是系统编程和嵌入式开发的基石。理解这些函数的实现原理,例如strcpy的缓冲区溢出风险、strncpy的终止符陷阱以及memcpy与memmove在处理内存重叠时的区别,对于编写健壮、安全的代码至关重要。在嵌入式开发中,尤其是在资源受限的STM32等平台,掌握这些函数的定制化实现和优化策略(如对齐访问、使用编译

weixin_34080571的博客 376

D语言的主要特点和编程范式

D语言是一种静态类型语言,可以在编译时进行类型检查,提高代码的安全性和性能。与此同时,D语言也支持类型推导,允许在不显式指定变量类型的情况下进行编程,提供了更简洁和灵活的语法。通过模板,可以在不损失类型安全性的前提下,实现代码的重用和多态性,提高了代码的可维护性和扩展性。以上示例展示了D语言的一些特性,包括静态类型、类型推导、内存安全、垃圾回收、函数式编程、元编程和模板。D语言支持函数式编程范式,通过提供高阶函数、匿名函数和闭包等功能,使函数式编程在D语言中变得更加容易和灵活。

TechChamp的博客 442

AEAD加密与TLS 1.3:构建现代互联网安全传输的基石

在网络安全领域,加密技术是保障数据机密性与完整性的核心。其基本原理是通过算法将明文转换为密文,确保传输过程中即使数据被截获也无法被解读。随着互联网应用对安全与性能要求的提升,传统的加密与认证分离方案(如AES-CBC+HMAC)因步骤繁琐、易出错且存在性能开销,已难以满足需求。AEAD(带关联数据的认证加密)技术应运而生,它将加密和认证原子性地集成,一步操作同时实现数据保密和防篡改,显著提升了安全性与效率。这项技术在TLS 1.3协议中被确立为强制标准,成为保障HTTPS、API通信等现代网络应用数据传输安

weixin_34183910的博客 417

学习D语言的tango:第二章 D语言基础

NULL 博文链接:https://yntcsb.iteye.com/blog/403385

学习D语言和Tango

D语言,非常强大的语言,但是由于某些原因未流行起来,资料也比较少!

别再死记公式了!用‘磁场对齐’的视角,5分钟彻底搞懂ST电机库的Park变换为啥‘反着来’

本文从磁场对齐的物理视角解析ST电机库Park变换的‘反逻辑’设计,揭示其与教科书公式差异的本质原因。通过分析Clarke变换和Park变换的坐标系定义差异,帮助工程师快速理解FOC控制核心逻辑,实现高效调试与创新设计。

weixin_33682790的博客 660

D语言真相 The Case for D(1-5)

NULL 博文链接:https://ideage.iteye.com/blog/409749

从Arduino到专业嵌入式开发:跨越鸿沟的进阶路径与核心技术解析

嵌入式系统开发是连接硬件与软件的核心技术领域,涉及微控制器、实时操作系统和底层驱动编程。其基本原理是通过直接或间接操作硬件寄存器来控制外设,实现特定功能,技术价值在于能够构建高可靠性、低功耗、实时响应的智能设备。在物联网、工业自动化、消费电子等广泛的应用场景中,嵌入式开发都扮演着关键角色。对于许多开发者而言,Arduino平台以其**极简的上手流程**和丰富的**生态系统**,成为了接触嵌入式世界的第一个台阶。然而,要深入专业领域,必须理解从封装库函数到直接操作寄存器、从集成开发环境到手动配置工具链的跨越,

weixin_33922672的博客 425

vue项目基于WebRTC实现一对一音视频通话

vue项目基于WebRTC实现一对一音视频通话。完整代码gitee地址: https://gitee.com/wade-nian/wdn-webrtc.git。

qq_920189602的博客 6648

Hi3516CV610硬件设计避坑指南:从电源模块到DDR布线实战解析

本文深入解析了Hi3516CV610硬件设计中的关键难点与实战技巧。重点剖析了电源架构的选型陷阱与PCB布局要点,详细阐述了DDR3/L高速布线的等长匹配、信号完整性及端接策略,并提供了MIPI接口与时钟电路的隔离设计指南。旨在帮助工程师规避常见设计错误,提升系统稳定性与可靠性。

ooo22的博客 255

结构体与函数:从数据封装到模块化编程的实战指南

在编程中,结构体(Struct)是一种将不同类型数据组合成单一实体的复合数据类型,它解决了数据孤岛问题,实现了语义封装。其原理是通过内存对齐优化存储效率,并作为构建链表等高级数据结构的基础。函数(Function)则是对操作的封装,通过抽象与复用提升代码可维护性,其参数传递(值、指针、引用)直接影响程序性能与安全性。两者的协同工作构成了模块化编程的核心,技术价值在于提升代码清晰度、健壮性和可维护性。在嵌入式开发、系统编程及C++面向对象设计中,这种数据与行为的结合模式是构建高效、优雅程序骨架的关键。本文通过

chuannaoxuan4674的博客 352

AMEsim柱塞泵的建模学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、为什么要对柱塞泵进行仿真?二、Amesim中柱塞泵的模型1.amesim中自己的定排量五柱塞的斜盘柱塞泵2.压力、流量仿真总结 前言 最近在学习Amesim进行柱塞泵的仿真学习,顺便在这里记录我的学习过程,这是我的初衷 提示:以下是本篇文章正文内容,下面案例可供参考 一、为什么要对柱塞泵进行仿真? 柱塞泵是功能和动力学比较复杂的流体机械。而在实际实验中,往往没有条件或者需要对柱塞泵做一些优化,所以需要我们利用仿真...

innocent_cft的博客 8184

SM2加密实战:软件实现与硬件加密卡选型指南

公钥密码学是现代信息安全体系的基石,它通过非对称加密机制解决了密钥分发与身份认证等核心问题。其原理基于复杂的数学难题(如大数分解或椭圆曲线离散对数),在保障数据机密性、完整性和不可否认性方面具有不可替代的技术价值,广泛应用于数字签名、密钥协商和安全通信等场景。国密SM2算法作为我国自主设计的椭圆曲线公钥密码标准,在金融、政务等关键领域逐步成为合规标配。本文聚焦于SM2算法在工程落地时面临的核心抉择:是采用软件库实现,还是集成专用硬件加密卡?文章将深入剖析两者在密钥管理、性能开销和合规认证上的本质差异,并结合

weixin_34210740的博客 549

Halcon实战:基于图像清晰度自动筛选最佳对焦图片

本文详细介绍了如何使用Halcon实现基于图像清晰度的自动筛选最佳对焦图片技术。通过分析灰度值统计和标准差等核心指标,结合实战代码示例,帮助开发者高效处理工业检测中的对焦问题,提升自动化检测的准确性和效率。

weixin_27015733的博客 440
上一篇: 实用算法实现-第6篇 线段树
下一篇: 实用算法实现-第 7 篇 Trie树
存储李希
博客等级 码龄15年 418粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值