首页 > 编程语言 >编程语言之泛型困境

编程语言之泛型困境

时间:2024-07-27 23:18:55浏览次数:9  
标签:Java 编程语言 程序员 泛型 困境 编译器 编译 之泛 实现

困境

泛型不可能三角

泛型困境的本质是,关于泛型,你想要缓慢的程序员、缓慢的编译器和臃肿的二进制文件,还是缓慢的执行时间。简单来说就是:要么苦了程序员,要么苦了编绎器,要么降低运行时效率。

不同语言对泛型的考量

以C、C++和Java为例,它们在泛型的设计上有着不同考量:

  • C语言:是系统级的编程语言,没有支持泛型,本身提供的抽象能力非常有限。结果是牺牲了程序员的开发效率,与Golang目前的做法一样,它们都需要手动实现不同类型的相同逻辑。但是不引入泛型的好处也显而易见,那就是降低了编译器实现的复杂度,也能保证源代码的编译速度;
  • C++语言:与C语言的选择完全不同,它使用编译期间类型特化实现泛型,提供了非常强大的抽象能力。虽然提高了程序员的开发效率,不再需要手写同一逻辑的相似实现,但是编译器的实现变得非常复杂,泛型展开会生成的大量重复代码也会导致最终的二进制文件膨胀和编译缓慢,我们往往需要链接器来解决代码重复的问题;
  • Java:在1.5版本引入了泛型,它的泛型是用类型擦除实现的。Java的泛型只是在编译期间用于检查类型的正确,为了保证与旧版本JVM的兼容,类型擦除会删除泛型的相关信息,导致其在运行时不可用。编译器会插入额外的类型转换指令,与C语言和C++在运行前就已经实现或者生成代码相比,Java类型的装箱和拆箱会降低程序的执行效率

实现泛型的方式

原文:

https://cloud.tencent.com/developer/article/1898560

标签:Java,编程语言,程序员,泛型,困境,编译器,编译,之泛,实现
From: https://www.cnblogs.com/jiayuan2006/p/18327692

相关文章

  • Mojo AI编程语言(十二)高级特性:深入理解Mojo
    目录1.Mojo简介2.高级数据类型2.1数组与矩阵2.2多维数组2.3字符串操作3.并行计算3.1线程与协程3.2并行算法4.分布式系统4.1RPC与消息传递4.2分布式数据处理5.高级语言特性5.1泛型编程5.2函数式编程5.3元编程6.错误处理与调试6.1错误处理6.2......
  • 仓颉编程语言技术指南:嵌套函数、Lambda 表达式、闭包
    本文分享自华为云社区《【华为鸿蒙开发技术】仓颉编程语言技术指南【嵌套函数、Lambda表达式、闭包】》,作者:柠檬味拥抱。仓颉编程语言(Cangjie)是一种面向全场景应用开发的通用编程语言,旨在兼顾开发效率和运行性能,并提供良好的编程体验。本文将深入探讨仓颉语言的主要特点和功能,包......
  • 学了十几种编程语言后,我终于悟了!
    大家好,我是程序员鱼皮。16~24年,算下来我学编程8年多了,这期间我学过十几种编程语言,比如C、C++、Java、Python、JavaScript、Go、PHP、C#、SQL、Scala等。这么一看,目前排名前10的语言除了Fortran没接触过外,别的语言或多或少都写过点儿东西。VisualBasic是高中考计......
  • 简单芯片测试案例(测试机TR6850S/编程语言:C)
    一、待测芯片测试项分析REXTOUT-100uA-100uAOVC20VQVC0.8VIDD+0.2mA0.8V500VKVS15V二、板卡资源选择1、OVCOVC是一种高达8通道的精密测量板,为设备引脚提供电压/电流,并提供测量功能来测量电压/电流。OVC功能类......
  • 陷入尝试网络爬取PrizePicks CS2道具的困境
    我正在尝试从Prizepicks中抓取CS2道具,但它卡在了一段代码上,我不知道如何修复这部分。我尝试使用api东西,但它对我来说效果不太好,所以我尝试从app.prizepicks中提取它。任何建议将不胜感激,因为我真的不知道还能做什么。下面是代码:frompathimportPathfromselenium......
  • 即将被淘汰 这几门编程语言!
    又到了周五了,忙碌了一周,可以放松放松一下了!在科技迅速发展的今天,编程语言的更新迭代速度令人惊叹。从经典的C语言到现代的Python,编程语言不断进化,满足着不同领域的需求。然而,有些编程语言却逐渐淡出我们的视野。你是否好奇,哪些编程语言即将被淘汰? 哪些编程语言正面临被淘汰......
  • Datawhale AI 夏令营 task2语言包陷入困境
     一、了解机器翻译在运行task1时,我仅仅只是按照教程一步步走下去,不理解每一步的意义,也不懂什么叫做机器翻译。于是在task2中碰了壁。1.机器翻译的含义机器翻译(MT)是自然语言处理领域的一个重要分支,其目标是将一种语言的文本自动转换为另一种语言的文本。机器翻译的发展经历......
  • 探索Mojo编程语言:AI开发者的新宠儿
    文章目录探索Mojo编程语言:AI开发者的新宠儿一、Mojo编程语言概述什么是Mojo?二、Mojo的安装与配置安装MojoWindowsmacOSLinux配置Mojo三、基本语法与数据类型标量变量数组哈希四、控制结构条件语句循环语句五、函数与模块函数模块六、文件操作与正则表达式文件读取......
  • GDP增速5%但个人生活困境?解析经济增长与个人福祉的非直接对应
    尽管GDP增速达到了5%,但我们个人在生活中却可能感到经济困境,这揭示了经济增长与个人福祉之间并非总是直接对应的关系。为了正确理解这一现象,我们需要从多个维度进行深入分析。首先,GDP增速作为宏观经济指标,主要反映的是经济总量的增长情况,它并不直接涉及个体或家庭的经济状况。......
  • 当需要在不同操作系统和编程语言环境中共享和处理 XML 数据时,可能会遇到哪些兼容性问
    在不同操作系统和编程语言环境中共享和处理XML数据时,可能会遇到以下兼容性问题:编码问题:不同操作系统和编程语言对于XML文件的默认编码可能不同。如果使用不同的编码方式,可能会导致乱码或无法正确解析XML数据。解决方法是在处理XML数据时,通过指定正确的编码方式来......