2024-04-25 13:22:07 发布
网友
作为一名计算机科学专业的本科生,我从C开始学习,其中指针是一种重要的数据类型。此后,我谈到了Java、JavaScript、PHP、Python。它们都没有指针本身。在
那为什么呢?他们的语言中是否有一些类似指针的等价物,或者指针的功能不再重要了?在
我大概有一些想法,但我很想听听更有经验的程序员的意见。在
在Java中:
为什么?
一般来说,指针被认为过于危险,所以现代语言尽量避免直接使用。在
他们的语言中是否有类似指针的等价物,或者指针的功能不再重要?
功能非常重要。但是为了降低它们的危险性,指针被抽象成毒性较小的类型,比如引用。在
基本上,这归结于更强的类型,以及缺少指针算法。在
大多数面向对象的语言将对象实现为C指针,但它们是抽象的,不能更改其值。因此,当您使用this/self时,它在大多数情况下确实是一个指针(某些语言可以使用一个对象表来加快垃圾回收和其他优化)。在
例如,在Java中,当您执行以下操作时:
Object t = new A(); t = new B();
您正在场景后面交换指针。有些语言重新引入了指针的概念,比如Go,但是你不能用它来做算术。在
所以从某种程度上说:没有指针并没有从语言中消失,它们只是以更好的方式实现而已。C有designe指针的方法一点也不好,但它是有其用途的。它不好的原因有很多,一个是:它破坏了程序的不变量。我并不是有意回避它,当然它们对C来说是至关重要的
在Java中:
为什么?
一般来说,指针被认为过于危险,所以现代语言尽量避免直接使用。在
他们的语言中是否有类似指针的等价物,或者指针的功能不再重要?
功能非常重要。但是为了降低它们的危险性,指针被抽象成毒性较小的类型,比如引用。在
基本上,这归结于更强的类型,以及缺少指针算法。在
大多数面向对象的语言将对象实现为C指针,但它们是抽象的,不能更改其值。因此,当您使用this/self时,它在大多数情况下确实是一个指针(某些语言可以使用一个对象表来加快垃圾回收和其他优化)。在
例如,在Java中,当您执行以下操作时:
您正在场景后面交换指针。有些语言重新引入了指针的概念,比如Go,但是你不能用它来做算术。在
所以从某种程度上说:没有指针并没有从语言中消失,它们只是以更好的方式实现而已。C有designe指针的方法一点也不好,但它是有其用途的。它不好的原因有很多,一个是:它破坏了程序的不变量。我并不是有意回避它,当然它们对C来说是至关重要的
相关问题 更多 >
编程相关推荐